Programmatic landing pages are dynamically generated pages tailored to specific audiences, offers, or search queries you define in a CSV file. Instead of manually creating individual pages, you can automate the process using data inputs, allowing you to create thousands of personalized pages efficiently. This approach is perfect for companies that manage a wide range of products, services, or locations.
With Landingi, you can set up programmatic landing pages to save time while maximizing the effectiveness of your marketing campaigns.
Why Use Programmatic Landing Pages?
- Scalability: Create multiple landing pages automatically based on a predefined template and data, making it easier to target different segments or locations.
- Personalization: Tailor each page to suit the specific audience’s needs, leading to higher engagement and conversions.
- SEO Benefits: By creating unique, data-driven pages for different keywords, you can increase your organic search visibility.
- Efficiency: Instead of manually building pages one by one, programmatic pages allow you to automate the creation of landing pages at scale.
How to Set Up Programmatic Landing Pages in Landingi
Generating a batch of programmatic pages involves three steps: creating a template landing page, preparing a CSV file, and generating the pages.
To generate Programmatic Landing Pages, you need credits.
Creating a template landing page
1. Build a page in the Builder
Start by building a template landing page that will serve as the foundation for your programmatic pages. Ensure it’s flexible enough to accommodate different data points (read about these variables in the next section) like location, service type, or product features.
2. Define data inputs in the template
You define the variables depending on the element: by inserting brackets {name} or copying the UID. In your template, insert dynamic fields where the data from your CSV file will populate. For example, use dynamic fields for things like {city}, {product}, or {service}. In the case of the UID variables, you’ll copy the ID and paste it into your CSV file. You can add URLs of images already uploaded to Landingi.
Remember that with programmatic landing pages, you can generate a maximum of 100 landing pages at one time (which equals 100 items in the CSV file).
Here are the available variables and how they can be used with data inputs:
See a condensed list of possible variables
- Publication domain and page name: these are set in the CSV file. To automatically publish pages to subdomains, you need to add the root domain to Landingi. Setup method: {} in a text field.
- Text Widget: content and redirect URL.
- Button Widget: label and redirect URL.
- SEO settings: title, description, and keywords.
- Form: all labels and fields, excluding the autoresponder. Setup method: element’s ID.
- Images: images, including the box widget and background.
- Images for specific viewports: You can set different file images (using URLs) that will be displayed depending on the device the user is accessing your page from. This includes only the page and section background and the image within the box widget.
- Counter widget: the date the widget will count down to. The correct formats are DD/MM/YYYY HH:MM and DD-MM-YYYY HH:MM. Set the date using the UID.
- HTML widget: HTML code snippet.
1. Page name
Set the name of the page in the CSV file. By naming the landing page properly, you can control it more easily later.
- To do in the builder: nothing
- To do in the CSV sheet: Name the column lpName, and then list below the names you want your landing pages to have.
This column must always be first in the CSV file.
2. Publication domain
Set the publication domain in the CSV file. To automatically publish pages to subdomains, you need to add your main domain to Landingi.
- To do in the builder: nothing
- To do in the CSV sheet: Name the column lpDomain, and then list below the addresses and paths where you want the landing page to be published (e.g., https://vienna.visit.com, https://london.visit.com, https://london.visit.com/summer-break).
This column must always be second in the CSV file.
3. Text widget
With the text widget, you can take the following actions:
- Text change. Programming pages allow you to replace the text anywhere and as many times as you need. You can insert this variable in any part of the text frame or use a separate text frame altogether. There are no restrictions on the length of the text.
- To do in the builder: Paste your variable in brackets {} (e.g., {city}) into a text box in any place.
- To do in the CSV sheet: Name the column after your variable (e.g., {city}), and list below it the text you want to display on the landing page. Tip: If your text is long, include the <br> tag between paragraphs.
- Link change. You can change where a link in specific text takes users when clicked.
- To do in the builder: Select the text or part of the text that you want to link. Next, select the “Create link” option from the context menu. In the address input field, paste the variable that will refer to the link (e.g., {text1link}).
- To do in the CSV sheet: Name the column after your variable (e.g., {text1link}), and list below it the addresses that should open when clicking on that text element.

3. Button widget
With the button widget, you can take the following actions:
- Text change. Programming pages allow you to replace the label displayed on the button. If you want to do this for more than one button, each button must have its own unique variable.
- To do in the builder: Paste your variable in brackets {} (e.g., {label1}) as a label on the button.
- To do in the CSV sheet: Name the column after your variable (e.g., {label1}), and then list below the text you want the label to have in place.

- Link change. You can change where a link in specific button takes users when clicked.
- To do in the builder: Select your button and expand the “Click action” option available in the panel on the right. Select “Redirect” as the action (Note: it only works with the redirect option!). In the address field, enter your variable in brackets {} (e.g., {buttonlink}).
- To do in the CSV sheet: Name the column after your variable (e.g., {buttonlink}), and then list below the addresses that should open when users click this button.

4. SEO Settings
You can also change the SEO settings on your landing pages using programmatic pages.
- To do in the builder: Go to Page Settings in the panel on the right. Unfold the “SEO / Social share” tab. Fill in each field with your unique variables. Make sure to enclose them in brackets {} (e.g., {title}, {keywords}, {description}).
- To do in the CSV sheet: Assign each variable a separate column, and then list below what you want to display in each SEO setting.

5. Form widget
You can use the programming pages to change field labels, placeholders, and the label of the form submission button.
- To do in the builder: In the preferred place in your form, enter your variable in brackets {} (e.g., {label1}, {placeholder}, {form button text}).
- To do in the CSV sheet: Assign each variable a separate column, and then list below what you want to display in each place on the form.
6. Images
With programmatic pages you can manage your pictures in several ways.
- Image widget.
- To do in the builder: Select your Image widget and copy its ID number.
- To do in the CSV sheet: Paste the copied ID into the title of the column, and then below that, paste the links to the images you want to be featured on the landing page.
- Ensure that the images you want to swap match the resolution of the widget in the builder to prevent poor image scaling.
- Image as a Shape widget background.
- To do in the builder: Select your Shape widget and copy its ID number.
- To do in the CSV sheet: Paste the copied ID into the title of the column, and then below that, paste the links to the images you want to be featured on the landing page.
- Image in section background.
- To do in the builder: Select your Section widget and copy its ID number.
- To do in the CSV sheet: Paste the copied ID into the title of the column, and then below that, paste the links to the images you want to be in a section background.
- Various images on different viewports (mobile/desktop).
- To do in the builder: Depending on whether you want to work with the Image, Shape or Section widget, the workflow in the editor is the same as described above, the only changes are in the CSV sheet.
- To do in the CSV sheet: Paste the copied ID into the title of the column, and then below that paste the links to the images you want in the section background. Separate the image addresses into mobile and desktop with the [mobile] or [desktop] tags before the link and the “|” symbol (e.g., [mobile]https://myimage3.com|[desktop]https://myimage4.com|[tablet]https://myimage4.com).

To use images uploaded to your Google Drive, create a folder for them in Google Drive and set up sharing settings:
1. Click on the three dots icon next to the folder name. Select Share > Share.

2. Set access to Anyone with the link and Viewers. Then click Done.

3. Open the folder. Click the three dots icon next to the image name. Select Share > Copy link. You can now paste the link into your CSV sheet.

7. Counter widget
You can use programmatic pages to create countdowns for various dates on your landing pages.
- To do in the builder: Select your Counter widget and copy its ID number. Note that this works only for the “Time counter” option.
- To do in the CSV sheet: Paste the copied ID into the title of the column, and then below it, list the dates you want the counter to count down to. Valid formats are DD/MM/YYYY HH:MM and DD-MM-YYYYY HH:MM.

8. HTML widget
You can use programmatic pages to enter variable values in the HTML widget.
- To do in the builder: In the HTML widget, enter your variable in brackets {} (e.g., {snippet1}) at the desired place in the code.
- To do in the CSV sheet: Name the column after your variable (e.g., {snippet1}), and then list below the codes/content to be substituted in the HTML widget.
3. Preview and publish the template landing page
Preview the pages to ensure everything is correct once your data is set up and your dynamic fields are configured. If everything looks good, you can publish it.
Save the file in the CSV format. If you created the file in the cloud (such as Google Sheets), download it to your computer.
Preparing a CSV file
1. In the first row, specify the variables. Please copy the name and domain inputs exactly as shown in the table: lpName and lpDomain.
lpName | lpDomain | {city} | {seotitle} | 123456zxcvb | 7890mnbvc |
2. In the following rows, include the data of each landing page you want to generate:
lpName | lpDomain | {city} | {seotitle} | 123456zxcvb (background’s ID) | 7890mnbvc (counters ID) |
Vienna city break | https://vienna.visit.com | Vienna | Discover Vienna | https://myimage1.com | 30-11-2024 09:00 |
London long weekend | https://london.visit.com | London | Get to know London | https://myimage2.com | 31-12-2024 09:00 |
3. If you want to display different images depending on the viewport, copy the image ID and set variables for selected viewports. Separate individual viewport settings with a vertical line: “|”.
This includes only the page and section background and the image within the box widget.
lpName | lpDomain | 123456zxcvb |
Vienna city break | https://vienna.visit.com | [mobile]https://myimage3.com|[desktop]https://myimage4.com|[tablet]https://myimage4.com |
London long weekend | https://london.visit.com | [mobile]https://myimage5.com|[desktop]https://myimage6.com |
4. Save your file in the CSV format.
Generating programmatic pages
Go to the Programmatic tab and select Create a batch. Choose the template landing page and upload the CSV file. You can assign the pages from a given batch to a group. After the process is complete, your pages will be automatically published.

Sample CSV file
Below you can download an example file in CSV format and an overview pdf file.
Need help?
If you need any help with preparing the template page or the CSV file, feel free to get in touch with our Support Team using the chat in the platform or by writing to us at support@landingi.com.