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.
Upgrade your WordPress site with powerful, flexible forms.
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.
- Go into your form and click Settings → Actions & Notifications.
- Hover over the Gated Content card and click + Add. Clicking the card itself doesn't add the action.

- 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.
- To choose when the action runs, select one or more options from the Trigger this action when dropdown.
- Add at least one gated content item.
- 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.
From Idea to Reality in Minutes. Build Powerful Forms, Dashboards, Apps and More.
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.
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.
Post
Select Post in the Type dropdown. Then pick the post you want to lock.
Formidable file
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.
Formidable PDF
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.
- PDF of a View: add
view=with the View ID and keepid=[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
This type appears when the Views add-on is active. The Formidable Views add-on is available on the Plus, Business, and Elite licenses.
- Select View in the Type dropdown.
- Pick the View you want to lock from the View dropdown. Only private Views appear in this list. New Views are private by default.
- Pick what the View shows in the Entry dropdown.

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.
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.
Access link shortcodes
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.
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.
| Shortcode | Output |
|---|---|
[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 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:
To write your own link text, use the show="url" shortcode as the address of a link in your message.
Access expires after (hours)
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.
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:
| Shortcode | Output |
|---|---|
[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.
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:
- Formidable checks the token against the entry that created it.
- 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.
- 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.
What visitors without a link see
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
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.
The dropdown is set to — None — by default, so visitors without a link see the 404 page or the password form.
Keep old token when entry is updated
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.
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
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.
The access link in my email is not working
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.
My access link shows up blank in the email
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.
Related developer hooks
- 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.

