🎉 Celebrate with 10% OFF on All Products! Use Code: GFEX10 Or Buy Any 2+ Items for 30% OFF with Code: GFEX30!

Gravity Forms Power Automate Integration Premium Add-on Setup Guide

Updated 11 min read Gravity Forms Integrations A–Z
On this page
  1. Video walkthrough
  2. What the Add-on Does
  3. Installation
  4. Part 1: Send Entries to a Flow
  5. Step 1: Create the flow trigger
  6. Step 2: Add the feed in Gravity Forms
  7. Step 3: Choose the data and generate the schema
  8. Step 4: Send a test
  9. Conditions, several flows and background sending
  10. Delivery, Retries and the Entry Screen
  11. Get told when a delivery fails
  12. Save the flow’s answer in the entry
  13. Signed requests
  14. Flows for users in your tenant
  15. Part 2: Let Flows Act on Entries
  16. A custom connector in a few clicks
  17. Security
  18. Troubleshooting
  19. The test answers HTTP 400.
  20. Entries arrive late.
  21. What happens without an active licence?
  22. Connect Gravity Forms to Power Automate

Video walkthrough

Gravity Forms Power Automate: Send Entries to Flows and Create Entries from Flows
Watch: connect Gravity Forms to Power Automate both ways, shown on the WordPress side. Watch on YouTube

The Data sent to the flow section of a Power Automate feed in Gravity Forms: the choice between all fields and only chosen fields with own keys, the entry details checkboxes for the entry link, IP address, browser, WordPress user ID and e-mail, and the Trigger schema area with the buttons Generate schema, Copy schema and Send test, the green message that the flow accepted the test with HTTP 202, and the generated JSON schema
Form Settings → Power Automate: choose the data, generate the trigger schema and send a test.

Requirements

  • WordPress 6.5 or newer, PHP 7.4 or newer, an HTTPS site.
  • Gravity Forms 2.9 or newer (any licence). Tested with Gravity Forms 2.9 and 3.1.
  • Microsoft Power Automate with a licence that includes premium connectors: the trigger “When an HTTP request is received”, the HTTP action and custom connectors are premium features on the Microsoft side.
  • No partner programme, no certified connector and no service in between: the add-on talks to your flows directly.

What the Add-on Does

The add-on connects Gravity Forms and Microsoft Power Automate in both directions. Triggers: every entry (or only the entries that match your conditions) is sent as JSON to a flow that starts with the trigger “When an HTTP request is received”. From there your flow can start an approval, post to a Teams channel, add a SharePoint list item, create a Planner task or send an Outlook e-mail. Actions: a secure REST API lets flows create entries, update them, find them, add notes and send notifications, with the HTTP action or a custom connector.

Installation

  1. Download the add-on zip from your GravityExtra account and upload it in Plugins → Add New → Upload Plugin, then activate it.
  2. Go to Forms → Settings → Power Automate, enter your key in the Gravity Extra License section and click Activate License.
  3. Open any form and go to Settings → Power Automate to connect your first flow.

Part 1: Send Entries to a Flow

Step 1: Create the flow trigger

  1. In Power Automate, click Create → Instant cloud flow (or Automated cloud flow and skip the trigger choice), give the flow a name and pick the trigger When an HTTP request is received.
  2. Set Method to POST (under Show advanced options).
  3. Choose Who can trigger the flow? For most sites “Anyone” is right: the URL contains a secret key. Choose “Any user in my tenant” if your company requires sign-in; see “Flows for users in your tenant” below.
  4. Add any action, for example Compose, and save the flow. Power Automate now shows the HTTP URL on the trigger. Copy it.

Step 2: Add the feed in Gravity Forms

Open the form, go to Settings → Power Automate → Add New, give the feed a name and paste the HTTP URL. The add-on only accepts https addresses of Power Automate and Azure Logic Apps (…logic.azure.com, …api.powerplatform.com and the government and China clouds), so a URL copied from the wrong place is caught at once. The URL contains a key (the part after sig=). The add-on never shows it in entry notes, logs, e-mails or the feed list: there you only see the host and the end of the workflow ID.

Step 3: Choose the data and generate the schema

Under Data sent to the flow choose one of two options:

  • All fields: every field is sent with a key made from its admin field label or label, for example “Request type” with the admin label “category” becomes category and “E-mail address” becomes e_mail_address. Set an admin field label on a field if you want its key to stay the same when you rename the label later.
  • Only the fields I choose: a mapping table with your own keys. Pick a field, a single input (such as the first name) or entry details, or type a custom value with merge tags, for example {Building:5} / {Rooms:9}.

Every payload starts with entry_id, form_id, form_title, date_created (ISO 8601 in UTC) and source_url. Tick the entry details you also want: a link to the entry in WordPress, the visitor IP address, the browser, and the WordPress user ID and e-mail. Passwords, credit card fields, CAPTCHA, HTML and section fields are never sent.

Values keep their type, so they are easy to use in a flow: numbers are numbers, checkboxes and multi selects are lists, names and addresses are objects, consent is true or false, dates are YYYY-MM-DD and List fields are lists of rows. A typical payload looks like this:

{
  "entry_id": 1042,
  "form_id": 3,
  "form_title": "Maintenance request",
  "date_created": "2026-10-19T09:41:07Z",
  "source_url": "https://www.yoursite.com/maintenance-request/",
  "entry_url": "https://www.yoursite.com/wp-admin/admin.php?page=gf_entries&view=entry&id=3&lid=1042",
  "name": { "prefix": "", "first": "Ana", "middle": "", "last": "Ruiz", "suffix": "" },
  "email": "ana.ruiz@mail.example",
  "category": "Plumbing",
  "priority": "Urgent",
  "rooms": ["Kitchen", "Office"],
  "estimated_cost": 250.5,
  "needed_by": "2026-11-03",
  "consent": true
}

Now click Generate schema, then Copy schema, and paste it into Request Body JSON Schema of the trigger in Power Automate. Save the flow. Every field now appears as dynamic content (“email”, “category”, “name first”) in all the following actions. Empty number fields are sent as null, and the schema allows that, so your flow does not fail on an optional number.

Step 4: Send a test

Click Send test. The add-on sends the latest entry of the form, or sample values when the form has no entries yet, to the URL on the screen, even before you save the feed. The answer appears next to the button, for example “The flow accepted the test: HTTP 202 in 412 ms”. Open the run history of the flow in Power Automate to see the data that arrived. Save the feed when you are happy.

Conditions, several flows and background sending

  • Conditional logic: send only when a field matches, for example only urgent requests to the on-call flow.
  • Several flows per form: add one feed per flow. Each has its own data, conditions and delivery settings.
  • Send in the background (on by default): the visitor sees the confirmation at once and the entry goes to the flow through the Gravity Forms background queue. Switch it off when the flow returns values you want to save before notifications are sent.

Delivery, Retries and the Entry Screen

A Maintenance request entry in Gravity Forms with the Power Automate box on the right showing the feed New request to Teams approvals as Sent with HTTP 202, the try number and time and a Send again button, and the entry notes: a first try refused with HTTP 503 and a retry planned in 1 minute, then the entry sent to the flow on try 2
The entry screen: the Power Automate box with the status per flow, Send again, and a note for every try.

Every try is written as an entry note, with the flow, the HTTP status and the time it took. When Power Automate does not answer, or answers 408, 429 or a 5xx status, the add-on tries again after 1, 5 and 30 minutes, then after 2 and 6 hours, up to the number of retries you choose (0 to 5, default 3). When Power Automate sends a Retry-After header, the add-on waits at least that long. Errors such as 400 (the body does not match the schema) or 404 (the flow was deleted) are not retried, because trying again would not help.

The Power Automate box on the entry screen shows the status of each flow for that entry (Sent, Will retry, Failed or Not sent), with the HTTP status, the try and the time, and a Send again button for users who may edit entries. Use it after you fix a flow.

Get told when a delivery fails

The add-on adds the notification event Power Automate: delivery failed to forms with a flow. It fires once, after the last try. Two merge tags tell you what happened:

Merge tag Shows
{powerautomate_flow} The name of the feed that failed.
{powerautomate_error} The error, for example “HTTP 400: The input body does not match the schema”, with any key in a URL masked.

Save the flow’s answer in the entry

A flow can end with a Response action that returns JSON, for example a ticket number created by the flow. Under Save the flow response map a key of that JSON (ticket_id or a path such as result.status) to an entry field. When the flow answers, the value is saved in the field and noted on the entry. Set Wait for an answer to 60 or 120 seconds for flows that need time before they respond.

Signed requests

Tick Sign every request when the flow sits behind Azure API Management or another gateway that checks requests. Each request then carries an X-GE-Signature header: t= with the time and v1= with the HMAC SHA-256 of “time.body”, keyed with the signing secret of the feed. Every request also has X-GE-Event (entry.submitted, entry.resent or entry.test_send), a unique X-GE-Delivery ID and X-GE-Attempt.

Flows for users in your tenant

If the trigger is set to “Any user in my tenant” or “Specific users in my tenant”, Power Automate only accepts calls with a Microsoft Entra ID token. Register an app in your own Microsoft Entra admin center (App registrations → New registration), create a client secret, and enter the directory (tenant) ID, the application (client) ID and the secret value in Forms → Settings → Power Automate. Click Test the app to check them, then choose “Users in my tenant” in the feed. The add-on asks for a token with the client credentials flow, keeps it until shortly before it expires and asks for a new one if a flow refuses it. Tokens and secrets are never written to notes or logs.

Part 2: Let Flows Act on Entries

The Flow actions settings in Forms, Settings, Power Automate: the Flow actions switch, the Application Passwords option, the API address with a button to download the custom connector file, a table of flow keys with name, the first characters of the key, allowed actions, forms, last use and Revoke links, and the form to create a new flow key with name, allowed actions and forms
Forms → Settings → Power Automate: flow actions, flow keys and the custom connector file.
  1. In Forms → Settings → Power Automate, switch on Flow actions and save.
  2. Create a flow key: give it a name, choose the allowed actions (Read, Create, Update, Notify) and, if you like, limit it to some forms. Copy the key: it is shown only once and stored as a hash. Revoke a key at any time.
  3. In your flow, add the HTTP action, enter the API address shown on the settings page plus the route below, and add the header X-GE-Flow-Key with your key.

Instead of a flow key you can also use a WordPress user with an Application Password (Users → Profile → Application Passwords) and the Basic authentication of the HTTP action. That user’s Gravity Forms permissions then apply: viewing entries for Read, editing entries for the other actions. You can switch this off on the same settings page.

Route What it does
GET /me Tests the connection and lists what the key may do.
GET /forms Lists the forms the key may use, with their entry counts.
GET /forms/{id} Fields with their keys, types, choices and inputs.
GET /forms/{id}/schema JSON schema of an entry, for the Parse JSON action. Add ?for=create for the body of a new entry.
POST /forms/{id}/entries Creates an entry. Mode submit (default) validates like a visitor and runs notifications and feeds; mode add saves the values as they are and sends notifications only with "notifications": true.
GET /forms/{id}/entries Finds entries: ?field=email&value=ana.ruiz@mail.example, with operator (is, isnot, contains, >, <), status, start_date, end_date, page, per_page and sort.
POST /forms/{id}/entries/search Finds entries with several filters, all or any.
GET /entries/{id} One entry with the same keys as the trigger.
POST /entries/{id} Updates the fields you send, the status (active, spam, trash), the star and read flags, and adds a note.
POST /entries/{id}/notes Adds a note to the entry.
POST /entries/{id}/notifications Sends notifications by name or ID, or all notifications of an event. Notifications with the event “Send manually” are perfect for an “Approved” e-mail.

Fields are addressed by the same keys as the trigger payload, or by field ID ("3") or input ID ("1.3"). Choices match by value or label, dates are sent as YYYY-MM-DD and converted to the date format of the field. A request to create an entry looks like this:

POST https://www.yoursite.com/wp-json/gepa/v1/forms/3/entries
X-GE-Flow-Key: gepa_...your key...
Content-Type: application/json

{
  "fields": {
    "name": { "first": "Grace", "last": "Whitfield" },
    "email": "grace.whitfield@mail.example",
    "category": "Cleaning",
    "rooms": ["Lobby"],
    "needed_by": "2026-11-20"
  }
}

And the approval branch of a flow can write the result back like this:

POST https://www.yoursite.com/wp-json/gepa/v1/entries/1042
X-GE-Flow-Key: gepa_...your key...
Content-Type: application/json

{
  "fields": { "ticket_id": "HD-1001", "status": "Approved by Kim Lee" },
  "is_starred": true,
  "note": "Approved in Teams by Kim Lee."
}

Errors come back with a clear code and HTTP status: 401 for a missing or wrong key, 403 when an action or form is not allowed, 404 when an entry is not found and 422 with an errors object by field key when values do not fit, for example a required e-mail address that is missing.

No loops

Entries made by a flow are marked with the name of the key or user. Feeds do not send them back to Power Automate, so a flow that creates an entry cannot start itself again. Tick “Also send entries that a flow created” in a feed when you do want that.

A custom connector in a few clicks

Click Download the custom connector file (OpenAPI) on the settings page. In Power Automate go to Data → Custom connectors → New custom connector → Import an OpenAPI file and choose the file. The connector gets actions such as Create an entry, Update an entry, Find entries and Send notifications, with the flow key asked once when you create the connection. Custom connectors you create for your own environment need no Microsoft review.

Security

  • Requests to flows go through wp_safe_remote_post with no redirects, so they cannot be turned towards your own server or private addresses.
  • The key inside a flow URL, signing secrets, the client secret, access tokens and flow keys are never written to entry notes, Gravity Forms logs or e-mails.
  • Flow keys are stored as hashes and can be limited to actions and forms; Application Password users keep their own permissions.
  • Every admin button (schema, test, send again, keys, token test, connector file) checks the user’s permission and a security token.

Troubleshooting

The test answers HTTP 400.

The body does not match the schema of the trigger, usually because the schema was generated before you changed the fields. Generate the schema again, paste it into the trigger and save the flow.

Entries arrive late.

With background sending, entries go through the Gravity Forms queue, which runs right after the submission on most sites. If your host blocks requests from the site to itself, WP-Cron sends them a little later. Switch background sending off for that feed if you need them at once.

What happens without an active licence?

You cannot add new feeds or flow keys. Existing feeds keep sending entries and existing keys keep working, so your flows are never interrupted.

Connect Gravity Forms to Power Automate

Start flows from form entries with a ready-made trigger schema, and let flows create, update and find entries and send notifications.

Still need help?

Our support team answers tickets every day, usually within a few hours.

0
0
Your Cart
Your cart is emptyReturn to Shop
🔥 FREQUENTLY BOUGHT TOGETHER
Complete Combo & Save 40%!
ITEM IN YOUR CART
Gravity Forms Klaviyo Add-on
$39.00/yr
+
🎁 RECOMMENDED ADD-ON SAVE 40% OFF
Original Price: $39.00/yr
Bundle Special Price: $23.40/yr