Troubleshooting Payment Feeds Not Processing

Troubleshooting Payment Feeds Not Processing

Updates Are ImportantCheck Conditional LogicCheck the Payment/Recurring AmountEnable Logging

Of course, payments being properly processed is the most important part of selling anything. When it』s not working as expected, it can be frustrating. In this article, we will show you how to troubleshoot issues with payment feeds.

A feed to the payment service must be present and active at the time of form submission in order to send payment data. Entries created without an active feed will not be sent to the payment service. Creating a feed afterwards will not process any entries previously submitted.

Updates Are Important
Your first step in troubleshooting payment or any other issues, is to make sure that your installation of WordPress, Gravity Forms, and any Gravity Forms add-ons are fully updated.
Doing this ensures that you are not encountering a bug that is in a later version, and thus eliminates possible embarrassment of an issue that could easily be fixed.
Check Conditional Logic
Within your feed, ensure that any conditional logic rules that may be in place, are actually being processed. Sometimes, conditional logic rules are are not met, which would then cause the feed to not be processed.
Check the Payment/Recurring Amount
In the event that the payment/recurring amount does not add up to a positive number, the payment feed will not process. Check to ensure that when the form is being submitted, that the product total is updated. If not, this is likely the reason that your payment feed is not processing.
Enable Logging
If you are continuing to have issues and you are certain that everything is configured properly by following the previous steps, testing with logging enabled is the next step.
Simply enable logging of all messages for Gravity Forms core and the add-on, then test the form. Once done, check the logs within the Forms > Settings > Logging or Forms > System Status pages for any errors; particularly those relating to the response from the payment gateway.
If you』re not able to see an issue within the logs, include the links to the logs in with your support ticket and we will be happy to help.

Translating Gravity Forms (or an add-on) using Loco Translate

Translating Gravity Forms (or an add-on) using Loco Translate

Getting StartedCreating a New TranslationUpdating an Existing TranslationTranslate those StringsShare Your TranslationOverride bundled Translation

In this article, we explain how you can use the Loco Translate WordPress plugin to create and update translations for Gravity Forms (or an add-on). Loco also has an free online PO file editor but this article focuses on the WordPress plugin.
Getting Started

Loco Translate is available from the WordPress Plugin Directory and can be installed directly from the Plugins > Add New page of your WordPress Admin.

Once installed and activated you will find a new Loco Translate menu item has been added. Here you will find a list of all your installed themes and plugins, including their available translations.

Creating a New Translation

To add a translation for a new language click the New language link in the Translations (PO) column of the plugin you want to translate.

On the New PO file tab select the language from the drop down of common languages, or enter the language ISO code.

You may also be offered the ability to choose where the translation will be stored. To ensure your translation is not lost during updates we would recommend selecting the global languages directory.

Click the Start Translating button.

See Translate those Strings

Updating an Existing Translation

On the Loco Translate packages tab, in the Translations (PO) column, click on the translation you want to update.

To pull in any new strings which need translating, and remove any translations for strings which no longer exist in Gravity Forms (or add-on) click the Sync button in the editor toolbar.

See Translate those Strings

Translate those Strings

On the editor screen you』ll be presented with a list of all the strings available for translating. Untranslated strings are shown in bold blue.
Select the string you want to translate from the list at the top and then enter your translation in the pane at the bottom.
Translate as many or as few strings as you like.

The newly translated string will have a star icon to the left of the string indicating that the changes have yet to be saved.

To compile the translation MO file for use by Gravity Forms (or add-on) click the Save button in the toolbar above the list of strings.

Share Your Translation

On the Loco Translate editor screen download the translation PO and MO files by using the buttons in the toolbar.

Open a support ticket or use our Contact Us form and let us know you would like to contribute your translations. We』ll reply informing you how best to send them to us. Once we have your files we will get them included in the next plugin update and on the Translations page of the support site. We will also credit you in the change log and on the Translations page.

Override bundled Translation
If for any reason you want to override bundled translation for your language with your own customized translation file, just use a FTP client to copy your .mo file to your site /wp-content/languages/gravityforms/
This will make Gravity Forms to use your translation file as first option. If a string is not included in your translation file, it will use the translation from the bundled translation file.

Troubleshooting Dropbox Feed Processing

Troubleshooting Dropbox Feed Processing

RequirementsLoggingCommon IssuesBasic AuthenticationcURL Error 28

Requirements
For Dropbox feed processing to work the following requirements must be met:

See the Gravity Forms System Requirements article for more details.
The site needs to be able to send a post request to it』s admin-post.php URL using the WordPress HTTP API to trigger processing of the uploaded files.

Logging
Begin troubleshooting by:
(1) Enable logging on the Forms > Settings page
(2) On the Forms > Settings > Logging page, ensure that Gravity Forms Core and any add-ons are enabled and set to log all messages.
Check our logging and debugging documentation for additional help.
As logging statements are only recorded when the functions they are contained within are run, perform the steps needed to replicate the issue such as submitting the form.
Example logging statements to look for in the add-on log:

DEBUG –> GFFeedAddOn::maybe_process_feed(): Checking for feeds to process for entry #[entry id] for gravityformsdropbox.
DEBUG –> GFFeedAddOn::maybe_process_feed(): Starting to process feed (# – ) for entry #[entry id] for gravityformsdropbox
DEBUG –> GF_Dropbox::initialize_api(): Testing API credentials.
DEBUG –> GF_Dropbox::initialize_api(): API credentials are valid.
DEBUG –> GF_Dropbox::process_feed(): Adding feed #1 to the processing queue.
DEBUG –> GFFeedAddOn::maybe_process_feed(): Marking entry #[entry id] as fulfilled for gravityformsdropbox
DEBUG –> GF_Dropbox::maybe_process_feed_on_shutdown(): Sending processing request for feed #.
ERROR –> GF_Dropbox::maybe_process_feed_on_shutdown(): Aborting. [message here]
DEBUG –> GF_Dropbox::maybe_process_feed_on_post_request(): Nonce verified; preparing to process request.
ERROR –> GF_Dropbox::process_feed_files(): Feed was not processed because API was not initialized.
DEBUG –> GF_Dropbox::process_feed_files(): Checking form fields for files to process.
DEBUG –> GF_Dropbox::process_feed_files(): Processing field: GF_Field_[type] Object(…)
DEBUG –> GF_Dropbox::process_[type]_fields(): Not uploading [type] field #[field id] because field value is empty.
DEBUG –> GF_Dropbox::process_[type]_fields(): Beginning upload of [type] field #[field id].
ERROR –> GF_Dropbox::process_[type]_fields(): Unable to upload file: [file url]
ERROR –> GF_Dropbox::process_[type]_fields(): Unable to create shareable link for file: [message here]
DEBUG –> GF_Dropbox::process_fileupload_fields(): File for lead: [file url]
ERROR –> GF_Dropbox::upload_file(): Unable to upload file because destination folder could not be created.
ERROR –> GF_Dropbox::upload_file(): Unable to upload file because destination is not a folder.
DEBUG –> GF_Dropbox::upload_file(): File [file name] was successfully uploaded.
ERROR –> GF_Dropbox::upload_file(): Unable to upload file: [message here]
DEBUG –> GF_Dropbox::upload_file(): Preparing local file for deletion.
ERROR –> GF_Dropbox::upload_file(): Unable to create shareable link for file: [message here]
DEBUG –> GF_Dropbox::update_entry_links(): Updating entry value for field #[field id] to [file url].
DEBUG –> GF_Dropbox::maybe_delete_files(): Deleting local files => Array(…)

Common Issues
If you find feed processing ends with the following logging statement that indicates something is preventing the WordPress admin-post.php from processing the request.

DEBUG –> GF_Dropbox::maybe_process_feed_on_shutdown(): Sending processing request for feed #.

Basic Authentication
If your site is using basic authentication that would cause the request to fail with a 401 unauthorized error. To resolve this issue you can add the Authorization header to the request using the WordPress http_request_args filter e.g.
add_filter( 'http_request_args', 'http_request_args_basic_auth_admin_post', 10, 2 );
function http_request_args_basic_auth_admin_post( $args, $url ) {
if ( strpos( $url, admin_url( 'admin-post.php' ) ) === 0 ) {
$args['headers']['Authorization'] = 'Basic ' . base64_encode( USERNAME . ':' . PASSWORD );
}

return $args;
}

Note: The above example is based on USERNAME and PASSWORD being constants defined elsewhere (i.e. the wp-config.php file), if not, you can include the values within the quotes e.g. 'USERNAME:PASSWORD'.
cURL Error 28

ERROR –> GF_Dropbox::maybe_process_feed_on_shutdown(): Aborting. cURL error 28: Operation timed out after 1000 milliseconds with 0 bytes received

For assistance resolving cURL timeouts like this please see the cURL error 28 in WordPress article.

Troubleshooting Dropbox Add-On 「SSL Required」 Messages

Troubleshooting Dropbox Add-On 「SSL Required」 Messages

Use the gform_dropbox_ssl_compatibility HookExample

From time to time, the Dropbox Add-On may incorrectly return a false negative in its checks for an SSL certificate present on the site. Here』s how to fix the issue.
Use the gform_dropbox_ssl_compatibility Hook
The gform_dropbox_ssl_compatibility filter will allow you to override any checks for an SSL certificate that are performed by the Dropbox Add-On. If you』re having issues, but are certain that an SSL certificate is installed correctly, this hook will override the SSL checks; allowing you to continue using the add-on.
Example
1add_filter( 'gform_dropbox_ssl_compatibility', '__return_true' );
Placing this code within your active theme』s functions.php or within its own plugin will override any SSL requirement checks within the Dropbox Add-On.

Translating Gravity Forms (or an add-on) using Poedit

Translating Gravity Forms (or an add-on) using Poedit

Getting StartedCreating a New TranslationUpdating an Existing TranslationTranslate those StringsShare Your TranslationOverride bundled Translation

In this article, we explain how you can use Poedit, the Gettext translations editor, to create and update translations for Gravity Forms (or an add-on).
Getting Started

Download the latest build of Gravity Forms or the Add-On to be translated.

Extract the ZIP.

Visit https://poedit.net/ and download a copy of Poedit. Downloads are available for both Windows and OS X.

Install and open Poedit.

Creating a New Translation

On the Welcome to Poedit screen click the Create new translation button.

Select the .pot file in the languages directory of the plugin you extracted earlier then click Open.

Select the language of the translation.

See Translate those Strings

Save the new translation by going to File > Save. The language ISO code should already be populated. Prefix that with the plugin slug e.g. gravityformscapsulecrm. Choose where the file should be saved then click Save.

Updating an Existing Translation

Download the .po file for the translation being updated from the Translations page.

On the Welcome to Poedit screen click the Edit a translation button.

Select the .po file for the translation you want to edit then click Open.

To pull in any new strings which need translating, and remove any translations for strings which no longer exist in Gravity Forms (or add-on) go to Catalog > Update from POT file. Select the .pot file in the languages directory of the plugin you extracted earlier then click Open.

See Translate those Strings

Save the updated translation by going to File > Save.

Translate those Strings

On the editor screen you』ll be presented with a list of all the strings available for translating. Untranslated strings are shown in bold.
Select the string you want to translate from the list at the top and then enter your translation in the pane at the bottom.
Poedit may also offer translation suggestions in the pane on the right. Click on the translation to use it.
Translate as many or as few strings as you like.

Share Your Translation

To compile the translation MO file for use by Gravity Forms (or add-on) go to File > Compile to MO. Choose where the file should be saved then click Save.

Open a support ticket or use our Contact Us form and let us know you would like to contribute your translations. We』ll reply informing you how best to send them to us. Once we have your files we will get them included in the next plugin update and on the Translations page of the support site. We will also credit you in the change log and on the Translations page.

Override bundled Translation
If for any reason you want to override bundled translation for your language with your own customized translation file, just use a FTP client to copy your .mo file to your site /wp-content/languages/gravityforms/
This will make Gravity Forms to use your translation file as first option. If a string is not included in your translation file, it will use the translation from the bundled translation file.

Troubleshooting Issues with Calculation Results

Troubleshooting Issues with Calculation Results

SummarySolutionsExample Logging Statements

Summary
When the calculation result stored in the entry differs from the result displayed on the front-end, that indicates that one or more field values referenced in the formula were not available.
How calculations work is that the value you see on screen is not included in the submission. For security reasons the calculation is rerun during submission using the field values saved in the entry. If a field hasn』t been saved yet then its value isn』t available to the calculation. The most common cause of this issue is if fields are in the wrong order; a calculation field must always be located after all the fields referenced in the formula.

Note: The Total field type is always the last to be saved so its value is not available for use in calculations.

Another cause is if the field used in the formula has a conditional logic rule based on a choice based field such as checkbox, radio buttons, or multi-select and the choice includes special characters or HTML.
Solutions
The solution to the total field not being available is to use a Number field with a subtotal calculation. Refer to the GravityWiz Subtotal Merge Tag (for Calculations) article for more information.
You can test with logging enabled to determine which field value wasn』t available when the calculation was rerun. See Logging and Debugging for details on how to do so.
Example Logging Statements

DEBUG –> GFFormsModel::save_input(): Queued field operation: Calculated Subtotal ([field label])(#[field id] – [field type]).
DEBUG –> GFCommon::get_calculation_value(): No value or non-numeric value available for field #[field id]. Returning zero instead.
DEBUG –> GFCommon::calculate(): No result or non-numeric result. Returning zero instead.

Troubleshooting an Empty or Incomplete Settings Page

Troubleshooting an Empty or Incomplete Settings Page

Check Enabled PHP ExtensionsChecking Your PHP EnvironmentFixing Your PHP EnvironmentContacting Support

If you see a settings page that has missing or incomplete content, this article will show you how to resolve the issue.
Check Enabled PHP Extensions
If you are seeing an empty or incomplete settings page, this is often caused by required PHP extensions not being loaded on the server. While these extensions are extremely common on the majority of web servers, it may not be present for one reason or another.
The extensions that are typically required for many Gravity Forms add-ons are mbstring and curl.
Checking Your PHP Environment
To see how PHP is configured on the server, as well as what extensions are loaded, the phpinfo() function exists. To use it, place the following into a PHP file on your server:

On this page, you should see sections titled mbstring and curl. If either of them are missing, they are not loaded within your environment.
Fixing Your PHP Environment
To fix the issue, you will likely need to contact your web host. If you maintain your own server or have root access, steps to installing these PHP extensions will drastically differ based on your specific environment.
Contacting Support
Before contacting support, be sure to follow all of the previous troubleshooting steps. This can often times save you from a bit of an embarrassing ticket where the issue is out of our control, as well as save time.
Upon contacting support, be sure to provide any related output that you have from logging. Often times, this is the first thing you will be asked to do when troubleshooting this issue over a ticket, so sending it ahead of time saves time.

Trash

Trash

Unwanted entries are not deleted immediately. Instead, these entries are moved to the Trash. An entry can only be permanently deleted after it has been moved to the Trash.

See this article for information on trash and other actions you can perform on entries.

Important Note: When an entry is permanently deleted, all files associated with this entry will also be deleted.

Troubleshooting Issues with Gravity Forms Download and Signature Links

Troubleshooting Issues with Gravity Forms Download and Signature Links

SummaryCauses

Summary

A small number of users have reported an issue with Gravity Forms produced links to download files. This includes links to files in a post, entry, or form submission email notification. This issue only applies to links which contain the gf-download or gf-signature query string parameter. Direct URLs which are stored in the entry within the database are not affected.

Causes

This issue may be caused by one of the following (ordered from most common to less common):

A theme or plugin conflict, such as blank lines after closing PHP tags in .php files. Try running through a full theme/plugin conflict test.An outdated PHP version. Refer to the Gravity Forms System Requirements article for details.A redirection plugin or .htaccess rule conflicting with the download URL.A caching or security module configured on the server.An email service such as SendGrid replacing the functional file URL from the notification with an invalid tracking URL. Deactivating the email services click/open tracking for links has resolved this issue in the past.The salts in the sites wp-config.php file being changed, invalidating the hashes which are included in the links. This can happen if you』ve migrated your site to a different server recently. If that is the case, you can get the new download links from the entry detail page.

Once the above causes have been ruled out and the issue remains, the next step would be to contact your web host so they can check for server side issues.

Troubleshooting Form Data Not Being Sent to a Service

Troubleshooting Form Data Not Being Sent to a Service

Check Gravity Forms and Add-On versionsCheck Your FeedsEnable Logging

Many of the add-ons that Gravity Forms offers require form data being sent to a 3rd party service, such as Dropbox. If you are having issues, here』s how to troubleshoot it.
Check Gravity Forms and Add-On versions
Be sure that Gravity Forms, as well as the add-on you are trying to use is completely up to date. Because of various changes that could take place either with the add-on or the service, keeping everything up to date ensures that something isn』t deprecated.
Check Your Feeds
Check to ensure that the feed for the add-on using the service exists and is enabled. In addition, be sure that if you are using conditional logic, that the conditions are met. If any of these are incorrect, the data will never be sent to the external service.
Enable Logging
If you are continuing to have issues and you are certain that everything is configured properly by following the previous steps, testing with logging enabled is the next step.
Simply enable logging of all messages for Gravity Forms core and the add-on, then test the form. Once done, check the logs within the Forms > Settings > Logging or Forms > System Status pages for any errors; particularly those relating to the response from the external service.
If you』re not able to see an issue within the logs, include the links to the logs in with your support ticket and we will be happy to help.