Using Calculations

Using Calculations

IntroductionCreating a calculation formulaNumber Formatting RulesTerminologyRules

Introduction

Calculations are available within a field when using a Number field with calculation enabled, or a Product field set to Field Type of Calculation. In this article, we will show you how to set up a calculation in a Number field, as well as go over some important rules on using number fields in calculations as well as the rules supporting different decimal formats.

Note: The Total field type cannot be used within calculations. Within this article, only Number fields are used.

You perform all the following steps from within the Form Editor.

Creating a calculation formula

We will generate a simple example of a calculation using two Number fields. 

Add 2 different number fields and name them First Number and Second Number.Save your form, it is important to do this so the newly added fields are available when setting up the calculation formula in later steps.Add a third Number field which will handle the result of the calculation. Name it Total.  Ensure that this field is positioned after the first two Number fields.Access the field settings of the Total field.Select the Enable Calculation checkbox to enable this field to be populated based on a calculation result. Once the Enable Calculation checkbox is selected, additional options will appear below it. See image (A) below. Access the field settings of the Total field. Click the button Insert Merge Tag and select your first field in the calculation. Note that only fields valid for use in calculations will be listed. See image (B) below.Add a mathematical operator. In this case, simple addition (+).Insert the Second Number field to complete the calculation. Check the calculation by clicking Validate Formula. If it says that your calculation is invalid, go back and take another look. See image (C) below.Your calculation is all set. Be sure you Save your form.

(A) Enabling calculations within your Number field titled 「Total」.

(B) Using a Merge Tag to insert your operands.

(C) Final formula

Number Formatting Rules

This section explains how to format numbers properly for product pricing and calculations.

Terminology

Decimal dot format: Number format where a dot is used as the decimal separator. Example: 5.20Decimal comma format: Number format where a comma is used as a decimal separator. Example: 5,20

Rules

When creating a calculation formula, all numbers manually entered in the formula must:

Be entered in decimal dot format**, and
Use a preceding 0 if required. Example: 0.2 is valid, 0,2 is not valid, .2 is not valid.

When entering number fields on a form on the front end of the site, users must enter the format configured for that number field, even if that field is being used in a calculation that uses a different number format.When using drop down or checkbox field types in a formula, the values must be formatted with the same format as the field containing the formula.For example, if you have a calculated number field in decimal comma format (i.e. 9.999,99) that has calculation formula that references a drop down field, the values of the drop down field must be also be in decimal comma format.If the number field is configured with a 「Currency」 Number Format, the drop down values must be formatted with the same decimal separator as the currency.When using a quantity drop down field to specify fractional values (i.e. 5.5), those numbers must be formatted with the same decimal separator as the site』s currency.​​​​​​Fields referenced in a calculation formula (1) must be positioned before the calculation field, and (2) must not be hidden by logic. This is because calculations are rerun during submission using saved values, and if the field hasn』t been saved yet or has been ignored due to logic at form submission, it won』t have a value available for the calculation, leaving the result either incorrect or empty.

Using the User Registration Add-On

Using the User Registration Add-On

IntroductionPre-RequisitesCreate Your FormCreate Your FeedCustom Registration PageLimitationsPayPal Standard IntegrationBuddyPress IntegrationMapping BuddyPress Profile FieldsUser Registration Add-On Hooks

Introduction

The Gravity Forms User Registration Add-On integrates with any form to allow you to register users on your website. If you are familiar with the MailChimp, Campaign Monitor, and FreshBooks Add-Ons, you should have no problems getting started with the User Registration Add-On.

Pre-Requisites

Setup the User Registration Add-OnA form with the Username and Email fields

Create Your Form

The first step in integrating the User Registration Add-On is going to be creating the form you would like to use. This can include existing forms. The only required fields a Gravity Form must contain to be compatible with the User Registration Add-On are the Username and Email fields. Here are the steps used to create an optimal User Registration form.

In your WordPress admin dashboard go to New Form under the Forms navigation or choose an existing form from Edit Forms.

Ensure you have the following fields on your form: Username (required) – Single Line TextFirst Name & Last Name – NameEmail (required) – EmailPassword – PasswordSave your form.

Create Your Feed

Your notification feed does the heavy lifting and is used to determine exactly what should happen after someone submits your form. For information on setting up User Registration feeds, see the following: Creating a Feed for the User Registration Add-On

Custom Registration Page

If you would like to use a custom registration page, create and publish a new WordPress Page and embed your registration form there.

Go to Forms > Settings > User Registration, and check the box Enable Custom Registration Page.Once checked, you will be presented with a drop down of all the Pages on your site. Select the Page you created as your custom registration form.Click the Update Settings button. This will redirect any visitors who try to access your site』s /wp-login.php?action=register page to the page on your site which holds your User Registration form.

Limitations

The User Registration Add-On does not automatically add custom meta fields to the WordPress user profile page. If you need to display the data, take a look at Justin Tadlock』s custom user meta post. There are also some third-party plugins you can use like the Extra User Details.

The User Registration Add-On does not automatically create Roles & Capabilities in WordPress, nor does it provide any form of content restriction on your website based on Roles & Capabilities. If you need to create and manage Roles & Capabilities and restrict content on particular pages or posts, take a look at Members or User Role Editor, which both integrate directly with Gravity Forms Roles & Capabilities.

PayPal Standard Integration

The User Registration Add-On integrates with the Gravity Forms PayPal Standard Add-On to provide the following options:

Register user only when a payment is received.When this option is enabled, the user will not be registered until the PayPal payment has been received.Update user when subscription is canceled.When this option is enabled, the user』s role will be adjusted based on the drop down selected to the right.

BuddyPress Integration

The User Registration Add-On integrates with the BuddyPress (BP) Plugin allowing you to populate BP profile fields from Gravity Form fields. The BP Meta section of the User Registration feed functions almost identically to the Custom Meta section with the exception of not having an Add Custom option. To add new BP meta options, you must add additional BP profile fields on the BP Profile Field Setup page.

The User Registration Add-On is designed to work with BP v1.2.7.

Mapping BuddyPress Profile Fields

Some BuddyPress fields require special consideration when mapping to Gravity Form fields on your User Registration Feed. Below is a list of these fields and the requirements for mapping them correctly.

CheckboxesA BP checkboxes field must be mapped to a checkbox field. Mapping to other field types will have varied results. In addition, the BP checkboxes field values should match your GF checkbox field values. Only matched values will be added to BP user profile data correctly.Multi Select BoxA BP Multi Select Box field must be mapped to a checkbox field. Mapping to other fields types will have varied results.

User Registration Add-On Hooks

The User Registration Add-On provides an assortment of hooks that can be used to modify the default functionality or extend it. For more information, review the User Registration Add-On Hooks.

Upgrading to GetResponse Add-On version 1.2.1

Upgrading to GetResponse Add-On version 1.2.1

SummaryAreas To ConsiderWe Shouldn』t Have to Say This But…

Summary
GetResponse Add-On version 1.2.1 includes updates to utilize the newest GetResponse API version 3. This version of their API includes new field data validations that did not previously exist, and upgrading carries a risk if you have existing forms that were previously breaking these validations.
Areas To Consider

Refer to this section of our 「Setting up A Feed」 article for specific information on the way fields are validated now. A field that breaks the validation will be ignored on submission, and that data will not be added to your contact.

The newer API has a different endpoint for the GetResponse Enterprise plan. As such, there is a new setting to define that. This only needs adjustment if you are specifically using their Enterprise plan, as it defaults to 「standard」 (which covers all the other non-Enterprise plans).

The upgrade process to any version using the version 3 API will modify the metadata of your existing GetResponse feeds. If you downgrade later, those changes cannot be reversed, and your feed will need to be recreated manually.

We Shouldn』t Have to Say This But…
As always, test your forms and feeds in a sandbox environment before you upgrade any production environment.

Including and Using Entry Meta with the Add-On Framework

Including and Using Entry Meta with the Add-On Framework

Introductionget_entry_meta()PropertiesExampleSaving a value to the Entry Meta keyAccessing the Entry Meta ValueDeleting the Entry Meta Value

Introduction
Entry meta data is custom data that』s stored and retrieved along with the entry object. For example, entry meta data may contain the results of a calculation made at the time of the entry submission, or a unique id for a subscriber returned by a mailing list service.
Any add-on which extends GFAddon, GFFeedAddOn, or GFPaymentAddOn can add custom entry meta.
get_entry_meta()
To add entry meta, override the get_entry_meta() function and return an associative array with the properties for each meta key your add-on is including.
Properties

label string
The label for the entry meta item.

is_numeric boolean
Used for sorting.

is_default_column boolean
Default columns appear in the entry list by default. Otherwise the user has to edit the columns and select the entry meta from the list.

update_entry_meta_callback string
The function that should be called when updating this entry meta value.

filter array
An array containing the configuration for the filter used on the results pages, the entry list search, and export entries page.
The array should contain one element: operators. e.g. 『operators』 => array( 『is』, 『isnot』, 『>』, 『<『 ) Example public function get_entry_meta( $entry_meta, $form_id ) { $entry_meta['simpleaddon_contact_id'] = array( 'label' => 'Simple Add-On Contact ID',
'is_numeric' => true,
'is_default_column' => true,
'update_entry_meta_callback' => array( $this, 'update_entry_meta' ),
'filter' => array(
'operators' => array( 'is', 'isnot', '>', '<' ) ) ); return $entry_meta; } public function update_entry_meta( $key, $lead, $form ) { $return ''; // return the value of the entry meta } Saving a value to the Entry Meta key In this example we are using gform_update_meta() to store the contact id returned by the third-party service during feed processing in the entry meta. public function process_feed( $feed, $entry, $form ) { $contact_id = $this->create_contact( $feed, $entry, $form );
gform_update_meta( $entry['id'], 'simpleaddon_contact_id', $contact_id );
$entry['simpleaddon_contact_id'] = $contact_id;

return $entry;
}

Accessing the Entry Meta Value
If you have access to the Entry Object then you could access the meta value like so:
$contact_id = rgar( $entry, 'simpleaddon_contact_id' );

If you don』t have access to the Entry Object but you do have the entry id then you can access the value by using gform_get_meta() like so:
$contact_id = gform_get_meta( $entry_id, 'simpleaddon_contact_id' );

Deleting the Entry Meta Value
The gform_delete_meta() function can be used to delete the meta value from the entry like so:
gform_delete_meta( $entry_id, 'simpleaddon_contact_id' );

Troubleshooting the Zapier Add-On

Troubleshooting the Zapier Add-On

Getting StartedAssumptionsEnabling LoggingTools > Site Health TestsAuthorization header is missingSSL ErrorsZapier Settings aren』t available in Gravity FormsUnable to view Forms at Zapier or unable to create Zaps or FeedsOther Issues that can impact Zapier Communication

Getting Started

We』ve put together this troubleshooting guide to help if you run into issues connecting Zapier to your Gravity Forms with the Zapier Add-On.

Assumptions

If you』ve run into an issue communicating with Zapier, it will more than likely happen when first authenticating the REST API connection at Zapier. To help rule out the most common problems, we do make the following assumptions regarding your Website and WordPress installation:

WordPress, Gravity Forms and the Zapier Add-On are all upgraded to the most currently released versionsSSL Certificate Installed and Configured on your WordPress website and operating properlyWebsite accessible to the internet

The authentication from Zapier to Gravity Forms uses REST API with Basic Authentication so your website must be accessible for that connection to occur. If you are running your WordPress website in any of the following configurations:

Behind a Firewall or regionally blocked accessCloudFlare or Caching or another methodology that involves some form of redirection or off-loading of contentSecurity Login plugins or redirected login to a Single Sign-On authorityWordFence or other restriction of access plugins that directly block REST API.htpasswd or other password protection plugins that restrict access to your site

You will need to either Whitelist the REST API endpoints for Gravity Forms and/or possibly add additional rules to those plugins or applications to allow Zapier to connect to your website in an unrestricted way.

Enabling Logging

You can determine what is happening with REST API by Enabling Logging for Gravity Forms API and checking the log files while you』re attempting to connect at Zapier. You can get good details on interpreting the log in our Troubleshooting REST API article.

The log will contain entries for every time that Zapier reaches out to your website attempting to authenticate, when creating or editing a zap, and when enabling and disabling a Zap within your Zapier Account dashboard.

If you reach out to Gravity Forms Support for help, we will require logging to be enabled for both Gravity Forms API and the Zapier Add-On.

Tools > Site Health Tests

With the most recent versions of WordPress, you can determine if your website has issues right in your WordPress Admin dashboard. This is the first place you should look if you』re having issues connecting from Zapier.

Go to Tools > Site Health in your WordPress Dashboard. A series of tests will be run against your installation to determine if your website is operating properly.

The tests we focus on are for the Authorization header:

Successful Authorization header test from Tools > Site Health

REST API:

Successful REST API test from Tools > Site Health

and SSL (HTTPS):

Successful HTTPS/SSL test from Tools > Site Health

If any of the above tests are failing or have errors, you will need to reach out to your Server Host for assistance in correcting the issues.

The following resources may be helpful to provide to your Server Host for troubleshooting:

WordPress .htaccess rewrite rules (will usually help with Authorization issues)WordPress REST API Connection FAQ

Authorization header is missing

If you』re receiving an error like the following in your Tools > Site Health under Security:

Authorization Header Test with an error.

This will mean that Basic Authentication will not work properly. If Basic Authentication is failing, you will need to reach out to your Server Host to resolve.

SSL Errors

If you』re seeing errors in the SSL sections like the following:

SSL Errors in Tools > Site Health

This will indicate that either your SSL isn』t properly configured, or is missing some necessary configuration steps. You will need to reach out to your Server Host to correct as SSL is required for Zapier to make a connection to your site. WordPress Site Health will attempt to provide a recommended solution for you, but there are some good resources below:

WordPress HTTPS and SSL Support FAQ

Zapier Settings aren』t available in Gravity Forms

If you have a membership or roles & capabilities plugin like Members installed, you will need to provide access to the Zapier capabilities in order to see the Settings under Forms > Settings > Zapier. Check our Roles & Capabilities documentation as that will show you which capabilities must be active to see those settings.

Unable to view Forms at Zapier or unable to create Zaps or Feeds

This usually indicates that you』re using an account that doesn』t have the correct access to the Gravity Forms settings. Verify the following:

Using an account in the REST API settings that doesn』t have the gravityforms_edit_forms capability.Only using 『READ』 access in your Forms > Settings > REST API account

Both of these are common issues and easy to correct. Switch your accounts to Admin Accounts in the Forms > Settings > REST API keys and make sure you』re using 『read/write』 access as defined in our REST API documentation.

Other Issues that can impact Zapier Communication

Attempting the connection on a website that isn』t running SSL or isn』t public to the internet. This can include websites hidden behind .htpasswd or other login methods.Having Authentication, REST API or SSL errors in your Tools > Site Health report (see above).Incorrect settings in your .htaccess files that are causing bad redirections or adding trailing backslashes to your REST API requests.Having some service in-between your website and REST API on your WordPress installation that is changing the content of the REST API requests. These issues usually will let Zapier see your site and seem to be working but Feeds won』t be created or you won』t be able to create Zaps.

We can help you troubleshoot to determine if any of the above issues are the problem you』re experiencing. Open a support ticket and we』ll help you troubleshoot the issue.

User Registration Feed Meta

User Registration Feed Meta

IntroductionUsagePropertiesMultisite PropertiesCustom Field Properties

Introduction
The Feed Object meta for the User Registration add-on is an associative array containing the properties which determine how the add-on should process the form submission.
12345678$feed['meta'] = array(    'feedName'                                => 'User Registration Feed 1',    'feedType'                                => 'create',    'feed_condition_conditional_logic'        => true,    'feed_condition_conditional_logic_object' => array(        'conditionalLogic' => array(),    ),);
Usage
We recommend accessing the $feed meta using the rgar() or rgars() functions, e.g.:
1$conditional_logic_enabled = rgars( $feed, 'meta/feed_condition_conditional_logic' );

Properties

feedName string
The feed name which appears on the add-ons feeds tab.

feedType string
The feed action. Possible values: create or update.

username string
The ID of the form field containing the username.

first_name string
The ID of the form field containing the user』s first name.

last_name string
The ID of the form field containing the user』s last name.

displayname string
How the user』s name should be displayed publicly. Possible values: username, firstname, lastname, firstlast, or lastfirst.

email string
The ID of the form field containing the user』s email.

password string
What to use for the user』s password. Possible values: ID of a password type field, generatepass, or empty.

role string
The role the user should be assigned. Possible values: a role name or gfur_preserve_role (update feed).

userMeta array
A multidimensional array containing the fields to be mapped to the user meta. See Custom Field Properties.

bpMeta array
A multidimensional array containing the fields to be mapped to the BuddyPress profile fields. See Custom Field Properties.

sendEmail boolean
Send the password to the new user by email? Default is true.

setPostAuthor boolean
Send this user as the author of the post created from the submission? Default is true.

userActivationEnable boolean
Enable user activation? Default is false.

userActivationValue string
Should the user be sent an email with an activation link or will the admin manually activate the user. Possible values: email or manual.

feed_condition_conditional_logic boolean
Is the feed condition (conditional logic) setting enabled. Default is false.

feed_condition_conditional_logic_object array
An associative array containing the conditional logic rules. See the Conditional Logic Object for more details.

Multisite Properties

createSite boolean
Should a new site be created?

siteAddress string
The ID of the form field that should be used for the site address.

siteTitle string
The ID of the form field that should be used for the site title.

siteRole string
The role the user should be assigned. Possible values: a role name or gfur_preserve_role (update feed).

rootRole string
The role the user should be assigned on the site they registered from. This option overrides the role property. Possible values: a role name, gfur_preserve_role (update feed), or empty.

Custom Field Properties
1234array(    'key'   => 'user_url',    'value' => '3',)
Each custom field is an associative array containing the following properties:

key string
The User Meta or BuddyPress field the mapped form field should be saved to. Possible values: a user meta_key, a BuddyPress field id or gf_custom.

value string
The ID of the form field or entry meta item containing the value for this field.

custom_key string
The custom meta_key. Only used by userMeta when key is set to gf_custom.

Upgrading to Gravity Forms v2.3

Upgrading to Gravity Forms v2.3

IntroductionWhat Do I Have to Do Before I Upgrade?Backup your databaseUpdate all your add-onsUpdate custom codeTest the upgrade on a staging serverWhat Happens During the Upgrade?TroubleshootingThe system status page still says that the upgrade is queuedThe migration is going very slowlyI』m seeing a PHP warning about accessing a table that is not validCan I delete the deprecated tables once the upgrade is complete?How can I prevent Gravity Forms from checking for outdated code?I』m panicking and I want to roll back

Introduction
This is the first time Gravity Forms has ever made such a major change to the database schema so we want to ensure that the upgrade process goes smoothly and successfully for all sites.
For the vast majority of sites, the upgrade process will pass largely unnoticed. However, there』s a lot going on in this upgrade so this document explains how it works and a few troubleshooting tips in case you get stuck.
What Do I Have to Do Before I Upgrade?
Backup your database
Really. Double check that your site backups actually restore correctly. If something goes wrong with the upgrade this is your best option for rolling back.
Update all your add-ons
Make sure that all your Gravity Forms Add-Ons are up to date. You should update all add-ons – including third-party add-ons – but the following official Add-Ons must be updated to these versions before updating to Gravity Forms 2.3.

PayPal Add-On v2.9+
Authorize.Net Add-On v2.4+
Partial Entries Add-On v1.1+
PayPal Payments Pro Add-On v2.3+
Signature Add-On v3.4+
User Registration Add-On v3.9+
PayPal Pro Add-On v1.8+

If you have any of these add-ons and if any of them are older versions then update them. If you don』t see the automatic update in the plugins list then you can download the latest version from your downloads page.
If you don』t update all your add-ons then you risk either corrupting or losing data.
Update custom code
Check all your custom code for direct access to the database. If you see any references to the following legacy tables then you』ll need to update your code to use the new database tables. Here is a list of the legacy tables which should no longer be used:

wp_rg_form
wp_rg_form_meta
wp_rg_form_view
wp_rg_form_incomplete_submissions
wp_rg_lead
wp_rg_lead_detail
wp_rg_lead_detail_long
wp_rg_lead_meta
wp_rg_lead_notes

See the guide to upgrading your code for further details.
Custom code which uses the API functions like GFAPI will not be affected. We don』t recommend accessing the database directly unless API functions do not fulfil the requirements.
Test the upgrade on a staging server
If you have access to a staging server then do the upgrade there first and test your site thoroughly in debug mode.
What Happens During the Upgrade?

The new database schema is created with new tables for all the data. You can find out more about the new schema in this doc.
The upgrade is queued. On multisite installations, upgrades are processed one by one, not simultaneously to avoid overloading the database server, so if you have a lot of sites please be patient. Form Submissions can still be received at this point.
Once the migration starts, form submissions are blocked for the duration of the upgrade process. Attempts to submit forms will fail validation with the following message: 「Your form was not submitted. Please try again in a few minutes.」
The data is copied over to the new tables in batches of 2000 database rows.
If the process is interrupted for example, due to a server restart during the migration, then a cron task will kick in to continue the process within 5 minutes.
The database version is updated in the system report, the form submission block is released and Gravity Forms will now use the new tables.

Troubleshooting
The system status page still says that the upgrade is queued
Check in the system status report that background tasks are enabled on your installation. If they aren』t, follow the troubleshooting steps for background tasks.

The migration is going very slowly
It』s possible to speed up the process by increasing the batch size. However, beware, you may need to increase the PHP maximum execution time as well. For instance, a batch size of 100k would probably require a maximum execution time of around 5 minutes depending on your server resources. You can change the batch size by adding the following constant to your wp-config.php file:
define( 'GFORM_DB_MIGRATION_BATCH_SIZE', 50000 );

I』m seeing a PHP warning about accessing a table that is not valid
If an outdated add-on or some outdated custom code tries to access one of the legacy tables then the following PHP warning will be triggered and displayed and/or logged while in WP_DEBUG mode: 「An outdated add-on or custom code is attempting to access the **** table which is not valid in this version of Gravity Forms. Update your add-ons and custom code to prevent loss of form data.」. See the guide to upgrading your code for further details.

Can I delete the deprecated tables once the upgrade is complete?
The upgrade process will not delete the deprecated tables. We recommend leaving them in place for a period of time to ensure they are no longer in use (such as by forgotten custom code or an old third party plugin). Once you are satisfied that is the case, you may delete these tables as needed to satisfy storage or data security concerns. As always, we recommend backing up (and testing your backup) before modifying or deleting large portions of data, and ensure that the security of your backups and the orphaned tables is in line with your established data security protocols as they may include personal customer data.

How can I prevent Gravity Forms from checking for outdated code?
Gravity Forms currently checks all database queries for outdated code. This is not optimal for performance so the check will be phased out and removed in a future version. However, if you』re confident that none of your code is using the old tables then you can use the following snippet to reduce the number of checks made.
add_action( 'plugins_loaded', function(){
remove_filter( 'query', array( 'GFForms', 'filter_query' ) );
} );

I』m panicking and I want to roll back
If the upgrade was successful and you』ve started to receive entries then it』s best not to roll back or you will lose the new entries. If you want to roll back then make sure you delete all the new database tables or restore your database from a backup so the migration process can begin cleanly again when you try the upgrade again. Open a support ticket if you have any doubts.

Twilio Change Log

Twilio Change Log

2.8 | 2020-09-152.7 | 2020-05-062.6 | 2019-08-072.5 | 2018-04-122.4 | 2017-08-022.3 | 2017-04-282.2 | 2016-08-312.1 | 2015-04-202.0 | 2014-12-111.1 | 2014-03-111.0 | 2011-11-010.2 | 2011-03-31

2.8 | 2020-09-15

Added support for Gravity Forms 2.5.
Adding logging statements for URL shortening during feed processing.
Updated the Bitly URL shortening service to the latest version to prevent intermittent failures while shortening URLs.

2.7 | 2020-05-06

Added translations for Hebrew, Hindi, Japanese, and Turkish.
Added support for feed duplication.
Fixed an issue with the From and Send To dropdowns in the feed settings not having default choices.

2.6 | 2019-08-07

Added security enhancements.
Fixed an issue with the shortened URL where long URLs with more than one parameter get truncated.
Fixed an issue where merge tags are escaped which breaks URLs with parameters.
Fixed issue where long messages (longer than 1600 characters) are not successfully sent.
Fixed an issue where messages with merge tags can't be sent.
Fixed an issue where only the first URL in the message can be shortened.

2.5 | 2018-04-12

Added security enhancements.
Added GPL to plugin header.
Updated Plugin URI and Author URI to use https.
Updated Twilio PHP SDK.
Fixed warning regarding the number of characters allowed for a message to display 1600 instead of 160.
Fixed Twilio PHP SDK not being included with final build.

2.4 | 2017-08-02

Added gform_twilio_message filter to modify the SMS message arguments before it is sent.
Added support for using merge tags in the To Number feed setting.
Added support for using test Twilio credentials.
Fixed a PHP warning for the From setting on the edit feed page if the API request for the numbers returned an error.
Fixed URLs not shortening in message if multiple merge tags are used.
Updated Twilio PHP SDK.
Updated URL shortened to use latest Bitly API.

2.3 | 2017-04-28

Added security enhancements.
Added translations.

2.2 | 2016-08-31

Added conditional logic support to the feed settings.
Updated to use the newer /Messages endpoint instead of /SMS/Messages.
Updated feed From Number setting) to use the select_custom field type allowing use of Alphanumeric sender IDs (Not supported by all countries.)
Updated minimum Gravity Forms version to 1.9.11.
Fixed an issue with the upgrade routine which caused it run even if a pre-framework version hadn't been installed.

2.1 | 2015-04-20

Updated the gform_twilio_set_to_phone_number filter to include $feed_id as the third parameter.
Updated logging.
Fixed a low severity security vulnerability in the admin area which could be exploited by authenticated users with form administration permissions.
Fixed an issue with URLs from processed merge tags not being shortened.
Fixed an issue with merge tag replacement in the message.
Fixed issue when shorten urls is checked and urls with spaces cause the Bitly url to be incomplete.
Fixed issue where a validated Twilio number was required even for non-trial Twilio accounts.
Fixed issue where a Bitly key was required in order to create a feed. Now feeds can be created without a Bitly key, but the "shorten URL" option requires it.

2.0 | 2014-12-11

Added integration with Add-On Framework.
Added text domain/path to header.
Updated POT file.
Updated required version of Gravity Forms to 1.8.17.
Updated code to new standards.

1.1 | 2014-03-11

Added new filter "gform_twilio_set_to_phone_number" to modify the TO phone number set in the admin.
add_filter("gform_twilio_set_to_phone_number", "change_to_number", 10, 2);
function change_to_number($to, $entry){
//grab phone number out of field 2, sample format "+17571234567"
$phone = !rgblank($entry["2"]) ? $entry["2"] : $to;
return $phone;
}
Added logging.
Updated to not send entries marked as spam.
Updated the URL to Bitly's API to use api.bit.ly instead of api.j.mp so the default short domain in the user's Bitly setting is used.
Fixed issue where RG_CURRENT_PAGE constant was not available when GF is deactivated.
Fixed issue on feed page that displayed only the first Twilio incoming phone number.
Fixed notices.
Fixed issue with merge tags with new lines on feed page.
Cleaned up extra parse_request add_hook with function that didn't exist.

1.0 | 2011-11-01

Added URL shortening support.
Changed Bitly short URL to http://j.mp.
Removing formatting characters from TO number when sending request to Twilio.

0.2 | 2011-03-31

Added feedback on settings page.
Added integration with PayPal so that SMS messages can be sent only when payment is received.
Added helper text and tooltips.

Login Form Shortcode

Login Form Shortcode

IntroductionShortcode ActionsloginExampleParameters

Introduction
The Gravity Forms User Registration plug-in adds a couple of shortcode actions that extends the possibilities for your Gravity Forms shortcode. See also the article on the user information shortcode.
Shortcode Actions
login
Requires: User Registration Add-On.
Displays the login form.
Example
[gravityform action="login" description="false" logged_in_message="Yay! You are logged in!" registration_link_text="Register for my super awesome site" forgot_password_text="Stop forgetting your password" /]

Parameters

title
If the form title should be displayed. Defaults to true.

description
If the form title should be displayed. Defaults to false.

logged_in_avatar
If the user avatar should display for logged in users. Defaults to true.

logged_in_message
A message to display to users who are logged in.

login_redirect
Defines a URL that the user should be redirected to after they have logged in.

logout_redirect
Defines a URL that the user should be redirected to after they have logged out.

registration_link_display
If the registration link should be displayed. Defaults to true.

registration_link_text
The text to display within the registration link. Defaults to Register.

forgot_password_display
If the Forgot Password link should be displayed. Defaults to true.

forgot_password_text
The text to display within the Forgot Password link. Defaults to Forgot Password.

tabindex
Defines a custom tabindex.

URL Validation In Gravity Forms

URL Validation In Gravity Forms

What is URL validation?How are URLs validated?TroubleshootingValidation hooks

Within Gravity Forms, URL validation methods exist to heighten security as well as avoid possible bugs. In this article, we will explain how URL validation works in Gravity Forms, and how to manipulate it.
What is URL validation?
URL validation is something that occurs within nearly all software and ensures the data submitted is the data expected. Doing so avoids issues related to security or bugs. By only allowing specific things to be passed, the probability of issues arising is significantly decreased.
How are URLs validated?
Within Gravity Forms, URLs are validated using multiple methods:

Checking that they begin with 『http://』 or 『https://』.
1$is_valid = ( strpos( $url, 'http://' ) === 0 || strpos( $url, 'https://' ) === 0 );

RFC validation of URLs using the filter_var() function.
1$is_valid = $is_valid && filter_var( $url, FILTER_VALIDATE_URL ) !== false;

Troubleshooting
Since Gravity Forms uses the PHP filter FILTER_VALIDATE_URL to validate URLs, the first course of action is to make sure your version of PHP is up-to-date.
If the issue persists on an up-to-date version of PHP, it is probably due to RFC standard limitations. The RFC standard is very strict, and does not account for some URLs that are valid. For example, it doesn』t support Hebrew characters even though there are URLs with those characters being used. To get around that problem, you can disable RFC validation. The following can be added to your theme or plugin:
1add_filter( 'gform_rfc_url_validation', '__return_false' );
Another alternative is to implement your own custom URL validation logic. That can be done with the gform_is_valid_url filter.
Validation hooks
Following are the hooks that be used to change the default URL validation methods:
gform_rfc_url_validation
gform_is_valid_url