Trello Feed Meta

Trello Feed Meta

IntroductionUsageProperties

Introduction
The Feed Object meta for the Trello add-on is an associative array containing the properties which determine how the add-on should process the form submission.
$feed['meta'] = array(
'feedName' => 'Trello Feed 1',
'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.:
$conditional_logic_enabled = rgars( $feed, 'meta/feed_condition_conditional_logic' );

Properties

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

board string
The Trello ID of the board the card will be added to.

list string
The Trello ID of the list the card will be added to.

cardName string
The name to be assigned to the card. Merge tags are supported.

cardDescription string
The description to be assigned to the card. Merge tags are supported.

cardDueDate string
The ID of the date field or a custom value. Possible values: The ID of a Date type field or gf_custom

cardDueDate_custom integer
The number of days after today, used when the value of cardDueDate is gf_custom.

cardLabels array
array(
'green' => true,
'red' => false,
'yellow' => false,
'purple' => false,
'orange' => false,
'blue' => false,
);

An associative array of labels with the color as the key to a boolean indicating if the label should be applied to the card.

cardMembers array
array(
'TRELLO_MEMBER_ID_HERE' => true,
);

An associative array with the member ID as the key to a boolean indicating if the member should be assigned to the card.

cardAttachments array
array(
'10' => true,
'11' => false,
);

An array of file upload fields. The field ID is the key with a boolean value indicating if the files for that field should be attached to the card.

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.

Triggering Webhooks on Form Submissions

Triggering Webhooks on Form Submissions

IntroductionConfiguring WebhooksSettingsNotes

Introduction

The Gravity Forms Webhooks Add-On enables you to make remote HTTP requests to external services when a form is submitted.

By utilizing webhooks, you can pass form data on to 3rd party services even when there is not an official add-on available for it.

If you would like an alternative with a little less webhook work, check out our Zapier Add-On, which allows you to utilize the thousands of integration Zapier can connect to.

Configuring Webhooks

Ensure you have installed and activated the Webhooks Add-On.

You configure the webhooks for a form using a feed. Go to Form Settings → Webhooks tab, and then click the Add New button to create a new feed that will send data to your service of choice, using a webhooks. Next, configure the request that is being made. This will vary based on the service that you』re making the request to. If you』re unsure of what settings to select here, you may want to contact the service that you』re trying to connect to.

Settings

SettingDescriptionNameEnter a name for your feed. This is never displayed and is only used for identification purposes. You can name this anything you want.Request URLEnter the URL this request should be sent to. This setting also supports Merge Tags. You can use the {admin_ajax_url} and {rest_api_url} merge tags when you will be performing local requests.Request MethodSelect the HTTP method which is to be used when performing a request. The supported methods are GET, POST, PUT, PATCH, and DELETE.Request FormatSelect the format for the webhook request. The supported formats are FORM and JSON.Request HeadersHere you can configure one or more HTTP headers to be sent with the request. See note 1. Request BodyHere is where you will define what data is sent with the request. You can select from the following options:All Fields: This will send the entire unformatted entry.Select Fields: This will display the Fields Values setting.Field ValuesOnly displayed when Request Body is set to Select Fields. This dynamic setting allows you to define the keys and values to be sent in the request body. See Note 2. Webhook ConditionLike other add-ons, conditional logic can be applied. To use conditional logic, select the Enable Condition checkbox and then configure the rules which should be met for this request to be sent.

Notes

The Content-Type header is automatically set to application/json during feed processing when the Request Format is set to JSON and the Request Method is set to POST or PUT.For the values, you can select from the form fields, entry meta, or Add Custom Value which will display a text input that supports Merge Tags.

Troubleshooting 404 Errors on Dropbox Settings Pages

Troubleshooting 404 Errors on Dropbox Settings Pages

Check RequirementsCheck For Updates

When configuring the Dropbox Add-On, you might be experiencing 404 errors within the Settings page for the add-on. In this article, we will show you how to troubleshoot the issue.
Check Requirements
The Dropbox Add-On requires the use of an SSL certificate installed on your site. If you do not have an SSL certificate, you will need to contact your host to get one installed before the add-on can be used.
This is a requirement of the Dropbox API and will not operate correctly without an SSL certificate. Once an SSL certificate is installed, the issues should subside.
Check For Updates
As with any piece of software, you may be experiencing a bug or incompatibility issues in older versions. To eliminate potential issues that are already resolved in a later version, be sure that everything is up to date. This includes Gravity Forms, the Dropbox Add-On, and WordPress.

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.

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.

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.

Troubleshooting a Missing 『Feeds』 Menu Item

Troubleshooting a Missing 『Feeds』 Menu Item

Check that the plugin is activatedCheck your WordPress user capabilitiesCheck for conflictsLook for errors

When trying to create an add-on feed, you』ll need to access the Feeds page. What if you don』t see the menu item? In this article, we』ll show you how to troubleshoot the issue.
Check that the plugin is activated
While it seems crazy, be sure that the add-on is activated by accessing the Plugins page in the WordPress dashboard. It』s fairly common that people install WordPress plugins and simply forget to activate it. Checking that the plugin is activated is a great way to save yourself from a potentially embarrassing support ticket.
Check your WordPress user capabilities
WordPress uses various user roles and capabilities to determine what users are allowed to do. As Gravity Forms strides to seamlessly integrate within WordPress as much as possible, it also uses roles and capabilities.
Your user simply may not have access to a capability that Gravity Forms is checking for. The easiest way to check over your current capabilities, as well as modify them if needed, is the 3rd party User Role Editor plugin.
Check for conflicts
Gravity Forms is developed to avoid plugin conflicts as often as possible, but with millions of WordPress plugins on the market, we can』t possibly test with every one of them.
Deactivating all other WordPress plugins and switching to a default theme such as Twenty Fifteen will help you narrow down if there is a conflict. If the issue resolves itself, slowly begin to re-activate plugins until the issue appears again.
Look for errors
If you』re still not seeing the menu item, look for errors that may be appearing when WP_DEBUG is enabled. These errors can provide more information as to what the issue may be.

Troubleshooting API Key Validation Issues

Troubleshooting API Key Validation Issues

Check Your KeyCheck The Add-On VersionsInstall the Debugging Add-OnEnable Logging

Note: This article refers to issues validating 3rd party API keys in add-ons. If you』re having trouble activating your Gravity Forms license key, contact support.
Check Your Key
This sounds obvious, but is often overlooked. As there are often multiple keys required, be sure that you have the correct key in the correct field. Also be sure that you』re not using an old key that has since been changed.
Check The Add-On Versions
Because services can change how their APIs operate from time to time, be sure that you are using the most recent version of the add-on. If not, you could be attempting to access an API that has since changed.
Install the Debugging Add-On
The Debugging add-on can often reveal a plugin or theme conflict. Be sure to test with the Debugging add-on to ensure that there is not an issue being caused by another plugin or theme.
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 the add-on, then try configuring the add-on again. 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.

Troubleshooting Background (async) Processing Issues

Troubleshooting Background (async) Processing Issues

AboutRequirementsLoggingAdmin Ajax request failscURL error 6cURL error 7cURL error 28cURL error 35Basic AuthenticationCron jobs not runningBasic AuthenticationWP Crontrol PluginCreate a real cron job

About
The background (async) processing feature was introduced in Gravity Forms 2.2. It is currently used by the following:

Feed processing by add-ons which extend the Gravity Forms feed add-on framework (GFFeedAddOn) and have declared that asynchronous feed processing is supported, such as the Webhooks Add-On.
If you are developing a GFFeedAddOn based add-on and want to use background processing see the $_async_feed_processing article.
If you want to use background processing with a GFFeedAddOn based add-on which does not currently support background processing, see the gform_is_feed_asynchronous article.

The Gravity Forms 2.3 database upgrade.
The third-party Gravity PDF add-on, version 5.0+.

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

The site needs to be able to send a post request to it』s Admin Ajax URL using the WordPress HTTP API to trigger processing of queued tasks.
The site needs to support cron jobs so the background processors healthcheck can restart processing of queued tasks if processing stops for some reason or if the request to Admin Ajax fails.

Visit the Forms > System Status page. See the Checking Your Environment Details article.
In the WordPress Environment section of the report the Background tasks row will indicate if Admin Ajax requests are working and the WordPress Cron or WordPress Alternate Cron rows will indicate if cron jobs are enabled.
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 or running the database upgrade from the system status page.
Example logging statements to look for in the Core log:

GF_Background_Process::dispatch(): Running for [gf_feed_processor or gf_upgrader].
GF_Background_Process::schedule_event(): Scheduling cron event for [gf_feed_processor or gf_upgrader].
GF_Background_Process::dispatch(): Unable to dispatch tasks to Admin Ajax: [message here].
GF_Background_Process::maybe_handle(): Running for [gf_feed_processor or gf_upgrader]. (Only if Admin Ajax triggers processing)
GF_Background_Process::handle_cron_healthcheck(): Running for [gf_feed_processor or gf_upgrader]. (Only if the cron triggers processing)
GF_Background_Process::handle(): Running for [gf_feed_processor or gf_upgrader].
GF_Background_Process::handle(): Processing batch for [gf_feed_processor or gf_upgrader].
GF_Background_Process::handle(): Batch completed for [gf_feed_processor or gf_upgrader].

Example logging statements to look for in the add-on log:

GFFeedAddOn::maybe_process_feed(): Adding feed (# – ) for entry #[entry id] for [add-on slug] to the processing queue.
GF_Feed_Processor::task(): already processed feed (# – ) for entry #[entry id] for [add-on slug]. Bailing.
GF_Feed_Processor::task(): attempted feed (# – ) for entry #[entry id] for [add-on slug] too many times. Bailing.
GF_Feed_Processor::task(): Starting to process feed (# – ) for entry #[entry id] for [add-on slug]. Attempt number: [attempt number here]
GF_Feed_Processor::task(): Unable to process feed due to error: [message here].
GF_Feed_Processor::task(): Marking entry #[entry id] as fulfilled for [add-on slug]

The add-on log will also include other add-on specific logging statements.
Example logging statement to look for in the core log for the 2.3 database upgrade:

GF_Background_Upgrader::task(): Running callback: Array(…)
GF_Background_Upgrader::task(): Callback needs another run: Array(…)
GF_Background_Upgrader::task(): Finished callback: Array(…)
GF_Background_Upgrader::task(): Could not find callback: Array(…)

Admin Ajax request fails
To be able to trigger processing of queued tasks the site needs to be able to send a post request to it』s Admin Ajax URL using the WordPress HTTP API. Here are some common errors which can prevent processing of queued tasks from starting. Most errors will be related to how the server hosting your site is configured so you may need to contact your host for assistance resolving the issue.
cURL error 6

GF_Background_Process::dispatch(): Unable to dispatch tasks to Admin Ajax: cURL error 6: Could not resolve host: [site-domain-here.dev]

This indicates there is an issue on the server hosting your site. Please contact your web host.
cURL error 7
If you find a logging statement like the following in the core log your site is unable to contact itself using the WordPress HTTP API, you may need to contact your web host so they can look into why that is.

GF_Background_Process::dispatch(): Unable to dispatch tasks to Admin Ajax: cURL error 7: Failed to connect to [site-domain-here.dev] port 443: Connection refused

If you are testing locally using the Local by Flywheel app and the site is using HTTPS see the following topic: https://local.getflywheel.com/community/t/curl-error-when-accessing-ssl-local-site/2940/8
cURL error 28

GF_Background_Process::dispatch(): Unable to dispatch tasks to Admin Ajax: cURL error 28: Operation timed out after 1001 milliseconds with 0 bytes received

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

GF_Background_Process::dispatch(): Unable to dispatch tasks to Admin Ajax: cURL error 35: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

This can be caused by an issue on the server hosting your site, your web host may need to update some of the packages on the server.
If your site is using the Cloudflare service their SSL configuration could also cause this error. Temporarily disabling Cloudflare for the site in question has been known to resolve the issue. You may need to contact Cloudflare support for assistance resolving this issue permanently.
Basic Authentication
You may see the following in the System Report

Background tasks: No ✘ Response code: 401

If your site is using basic authentication you can add the Authorization header to the Ajax request using the WordPress http_request_args filter e.g.
add_filter( 'http_request_args', 'http_request_args_basic_auth', 10, 2 );
function http_request_args_basic_auth( $args, $url ) {
if ( strpos( $url, admin_url( 'admin-ajax.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'.
Cron jobs not running
The cron jobs should only run if processing by Admin Ajax can』t be started, or if Admin Ajax stops processing the tasks before the queue has been cleared.
Visit the Forms > System Status page. See the Checking Your Environment Details article.
In the WordPress Environment section of the report, WordPress Cron or WordPress Alternate Cron should be enabled. If both are disabled, try setting DISABLE_WP_CRON to false in the wp-config.php file e.g.
define( 'DISABLE_WP_CRON', false );
Basic Authentication
If your site is using basic authentication that also would prevent cron jobs from running. You can resolve that issue by adding the Authorization header to the cron request using the WordPress cron_request filter e.g.
add_filter( 'cron_request', 'cron_request_basic_auth' );
function cron_request_basic_auth( $cron_request ) {
$cron_request['args']['headers']['Authorization'] = 'Basic ' . base64_encode( USERNAME . ':' . PASSWORD );
return $cron_request;
}

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'.
WP Crontrol Plugin
If you are still having issues, install the WP Crontrol plugin by John Blackbourn.
Visit the Tools > Cron Events page. The plugin will display a warning message at the top of the page if your cron system doesn』t appear to be working (for example if your server can』t connect to itself to fire scheduled cron events).
If you don』t see a warning message check the table to see if any of the following jobs exist:

wp_gf_upgrader_cron
wp_gf_feed_processor_cron

Some sites may use a different prefix instead of the wp prefix shown in the above names.
If you do find the job, try clicking the run now link which is located to the right of the Recurrence column, and then check the logs in a few minutes to see if the tasks were processed.
Create a real cron job
If you find the cron is unreliable your site may not be receiving enough traffic for WordPress to process the cron jobs, you may need to create a real cron job in your hosting control panel. See this article.

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.