Docs & Support

Learn about all the Formidable features and get support from our amazing customer success team.

Gated Content

Gated Content lets you lock a download, a private page, or other content behind your form. Each person who submits the form gets their own access link, so only the people who fill out your form can open it.

Gated Content requires Formidable Forms 6.33 or newer.

Set up the Gated Content action

The Gated Content action lives with the rest of your form actions. Add it to the form that people fill out to get access.

  1. Go into your form and click Settings → Actions & Notifications.
  2. Hover over the Gated Content card and click + Add. Clicking the card itself doesn't add the action.
    Gated Content - Add the form action
  3. Give the action an Action Name for easy reference. This name is only seen on the back end. It is set to Gated Content by default.
  4. To choose when the action runs, select one or more options from the Trigger this action when dropdown.
  5. Add at least one gated content item.
  6. Click Update to save your changes.

The action locks the content but doesn't send anyone a link by itself. To send people their link, add an access link shortcode to a Confirmation or Send Email action on the same form.

Trigger options

The Trigger this action when dropdown lists these options:

  • Entry is created is selected by default. Access goes out as soon as the form is submitted.
  • Successful Payment: use it when your form collects a payment, so access only goes out once the payment clears.
  • Entry is updated: a new access link is created each time the entry is edited. This option is a premium feature.

Formidable Forms makes advanced site building simple. Launch forms, directories, dashboards, and custom WordPress apps faster than ever before.

Gated content items

An item is the content the action locks. Click + Add Item under GATED CONTENT ITEMS. Then pick what kind of item it is from the Type dropdown. The rest of the row changes to match the type you pick.
Gated Content - Add Item

There are 5 types: Page, Post, Formidable file, Formidable PDF, and View. Types that need Formidable Forms Pro or an add-on you don't have are greyed out in the dropdown. View only appears when the Views add-on is active.

Page

Select Page in the Type dropdown. Then pick the page you want to lock from the Page dropdown.
Gated Content - Page item

Post

Select Post in the Type dropdown. Then pick the post you want to lock.
Gated Content - Post item

The Page and Post dropdowns only list content that is set to private or password-protected in the page editor settings. When your site has more than 50 of them, the dropdown becomes a search box. Type part of the title and pick it from the list.

Formidable file

— Premium Feature —

This type is available on the Basic, Plus, Business, and Elite licenses.

Select Formidable file in the Type dropdown. Two dropdowns appear. Pick the form that holds the upload in the Form dropdown. Then pick the file in the File dropdown.
Gated Content - Formidable file item

The File list is built from files uploaded through File Upload fields, grouped by the form the field belongs to. It is not a list of media library items.

Formidable PDF

— Premium Feature —

This type needs the Formidable PDFs add-on, which is available on the Business and Elite licenses.

Select Formidable PDF in the Type dropdown. Then enter a PDF shortcode in the PDF shortcode box. To give each person a PDF of their own submission, include id=[id] in the shortcode:

[frm-pdf id=[id]]

Formidable replaces [id] with the ID of the entry that created the access link, so each person's link opens the PDF of their own entry.
Gated Content - Formidable PDF item

  • PDF of a View: add view= with the View ID and keep id=[id]. The PDF then shows that person's entry on the View's detail page: [frm-pdf view=10 id=[id]]. Replace 10 with the ID of your View.
  • The same PDF for everyone: put one entry ID in the shortcode, such as [frm-pdf id=25]. Everyone with an access link gets the PDF of entry 25.

The link text comes from the label attribute in your shortcode, such as [frm-pdf id=[id] label="Download your certificate"]. Leave it off and the link reads Download PDF.

View

— Premium Feature —

This type appears when the Views add-on is active. The Formidable Views add-on is available on the Plus, Business, and Elite licenses.

  1. Select View in the Type dropdown.
  2. Pick the View you want to lock from the View dropdown. Only private Views appear in this list. New Views are private by default.
  3. Pick what the View shows in the Entry dropdown.
    Gated Content - View item

Your Entry options are:

  • No entry (listing view) shows the View the way you built it, with every entry it's set to display.
  • Recently created entry shows only the entry from the submission that created that person's access link. Everyone gets a link to their own submission.
  • An entry number, such as #1, pins the View to that one entry. Everyone with an access link sees that same entry.
Recently created entry is the safe pick when people are looking at their own data. Formidable ties the access link to the entry that created it. Nobody can change the entry number in the address bar and read someone else's submission. Picking an entry number does the opposite on purpose: it shares that one entry with everyone who has a link.

Access links for a listing View point at the View itself. Links for a single entry point at that entry's detail page, using the detail page parameter you set in the View.

Add more than one gated item

Click + Add Item again to gate more than one thing with the same action. To take an item back out, click the minus icon at the right end of that item's row.

Setting up the action locks the content. To send people their link, add one of these shortcodes to a Confirmation or Send Email action on the same form. Formidable swaps the shortcode for a working link.

Look under ACCESS LINK SHORTCODES inside the action. Click the copy icon next to any shortcode to grab it.
Gated Content - Access link shortcodes

The id is filled in with your action ID once you click Update. A new action that hasn't been saved yet shows id="0", so save the action before you copy a shortcode.

ShortcodeOutput
[frm_gated_content id="10"]Access links for all items
[frm_gated_content id="10" item="0"]Access link for the first item (0-indexed)
[frm_gated_content id="10" item="0" show="url"]URL only for the first item (no link tag)
[frm_gated_content id="10" show="access_token"]Raw access token string

In these examples, 10 is the ID of the Gated Content action.

If you're not sure which one to use, then start with the first shortcode. It prints a link to every item in the action. When you want a separate link for each item, use item.

The item parameter starts counting at 0, so the first item is item="0", the second is item="1", and so on.

The link text is the title of the page, post, View, or file, or the PDF shortcode's label. WordPress adds Private: or Protected: in front of the title of private and password-protected content. Here is a Confirmation message with the first shortcode, for a private page and a PDF:
Gated Content - Access links in the confirmation message

To write your own link text, use the show="url" shortcode as the address of a link in your message.

Access expires after (hours)

— Premium Feature —

This setting is available on the Basic, Plus, Business, and Elite licenses.

Enter the number of hours the access link stays good for in the Access expires after (hours) box. The lowest you can set is 1 hour, and only whole numbers are allowed.
Gated Content - Access expires after (hours)

The box is blank by default, so access never expires. Leave it blank to keep it that way.

The clock starts the moment the form is submitted and the token is created. It does not start when someone first opens the link. The time limit applies to links created after you save the setting. Links sent before that keep working without a time limit.

Once you set an expiration time and click Update, a fifth shortcode appears in the ACCESS LINK SHORTCODES table:

ShortcodeOutput
[frm_gated_content id="10" show="expired_time"]Time until access expires (for example "1 day" or "3 days")

Add that shortcode to your email so people know how long they have.

Expired tokens are cleared out automatically once a day. Deleting a Gated Content action deletes all of its tokens right away.

How access works

When your form is submitted, Formidable creates a random access token and saves it with that entry. For a page, post, View, or file, the access link is your content's normal address with ?access_code= and the token added to the end.

Here's what happens when someone opens that link:

  1. Formidable checks the token against the entry that created it.
  2. If the token is good, the visitor gets in. Formidable stores the token in a cookie in their browser. It then reloads the page with the token stripped out of the address bar. That keeps the token out of browser history and server logs.
  3. On every visit after that, the cookie does the work, so the same person keeps their access without the original link.

Each submission gets one token for all the items in the action. Every item has its own access link with that token, and each link unlocks its own item. If you gated 3 items, then send all 3 links, for example with the shortcode that lists every item.

The cookie only lives in the browser that opened the link, and the address left after the reload no longer has the token. To get in on another device, such as a phone and a laptop, open the original link from the email on each one.

If the person was logged in to your site when the action ran, their access is also tied to their account. They get in whenever they're logged in, on any device, even without the link. With the Entry is created trigger, the action runs when they submit the form. With Entry is updated, the new access goes to the account that updated the entry, such as an admin editing it in the back end.

Access links are reusable, not one-time. The same link keeps working until it expires or the action is deleted. It also stops working when the entry is updated while the Entry is updated trigger is on and Keep old token when entry is updated is unchecked.

This depends on how you locked the content in WordPress.

  • Private content returns a 404 page not found. WordPress hides it completely.
  • Password protected content shows the normal WordPress password form. Anyone with the password still gets in that way. When you set an access page, visitors go there instead of seeing the password form.

A valid token skips both of these. Token holders never see the password form.

With Formidable Forms Pro, you can send these visitors somewhere friendlier instead.

See the access page section below.

Access page

— Premium Feature —

This setting is available on the Basic, Plus, Business, and Elite licenses.

Pick a page in the Access page dropdown to catch anyone who lands on your gated content without a valid token. Those visitors are redirected to this page instead of seeing a 404 page or a password form. The dropdown lists your published pages.
Gated Content - Access page

The dropdown is set to — None — by default, so visitors without a link see the 404 page or the password form.

Put the form with your Gated Content action on this page, and add an access link shortcode to its Confirmation action. People who arrive without a link can fill out the form there and get a new access link right away.

Keep old token when entry is updated

— Premium Feature —

This setting is available on the Basic, Plus, Business, and Elite licenses.

When the action runs on Entry is updated, updating an entry throws out that entry's old access token and creates a new one by default. The old link stops working straight away.

Check Keep old token when entry is updated to leave the original link working. A new token is still created either way.
Gated Content - Keep old token when entry is updated

This setting only appears once you select Entry is updated in the Trigger this action when dropdown. If you don't see it, then check your trigger first.

Conditional logic

— Premium Feature —

This setting is available on the Basic, Plus, Business, and Elite licenses.

Toggle on Add Conditional Logic to run the action only when the entry matches the rules you set. Learn more about how to set up conditional logic. In the free version, this toggle appears as Use Conditional Logic and can't be turned on.

Limitation

  • One form can have up to 99 Gated Content actions, the same limit as every other form action.

Troubleshooting

My page, post or View is not in the dropdown

The Page, Post, and View dropdowns only list content that is locked down in WordPress. Open the page or post in the editor. Then set its visibility to Private or Password protected under the Status & visibility panel. Once you save it, it shows up in the dropdown. New Views are private by default, so they show up in the View dropdown without any change.

An access link stops working when:

  • It is older than the Access expires after (hours) setting.
  • The entry was updated while the Entry is updated trigger was on, and Keep old token when entry is updated was unchecked. Use the newer link sent after the update.
  • The Gated Content action was deleted.

To send a new access link, submit the form again. With Formidable Forms Pro and the Entry is updated trigger turned on, updating the entry also creates a new link.

The user is logged in but still cannot get in

Logging in only grants access when the person was logged in to the same account when the action ran for their entry. If they submitted the form while logged out, their access belongs to the link and the browser cookie, not to their account. The same goes when someone else updated their entry while the Entry is updated trigger was on. Ask them to open the newest access link from their email.

Oops! That file is protected

This message shows when someone opens a protected file without a valid access link. Check that the item Type is set to Formidable file and that the right file is selected. Then open the file from the access link in the email, not from a copied file address.

The shortcode only outputs a link while Formidable still holds the token for that submission, which lasts about 5 minutes. That covers the confirmation message and any email sent by the same submission. Put the shortcode in a Confirmation or Send Email action on the form that creates the token. It won't work in a View, a page, or a later email built from the same entry.

  • Return a custom gated item class for your own item types with the frm_gated_item_make hook.
  • Register custom item types, or turn on greyed-out ones, in the action settings with the frm_gated_content_item_types hook.
  • Show your own settings inside an item row with the frm_gated_content_item_type_settings hook.
  • Supply a valid token from a custom source with the frm_obtain_gated_token hook.
  • Change whether a token grants access to an item with the frm_gated_content_is_valid hook.
Was this article helpful? *

This article may contain affiliate links. Once in a while, we earn commissions from those links. But we only recommend products we like, with or without commissions.

In this article

    We have a small, but amazing team of dedicated people who are committed to helping you achieve your goals and project requirements.


    Copyright © 2026 Strategy11, LLC. Formidable Forms® is a registered trademark Strategy11, LLC.

    Complete your purchase
    Don't forget your purchase!
    Complete Purchase
    Join 400,000+ using Formidable Forms to create form-focused solutions fast. Get Formidable Forms