Overview
This approach allows you to:- Create hundreds of targeted landing pages from a single template
- Manage all page content through a user-friendly CMS interface
- Update content without code changes or deployments
- Target different audiences and keywords effectively
- Maintain consistent design while varying content
- Keep an audit trail of updates to your SEM pages, via the Embeddables CMS’s version control system
Setting Up Your CMS Table
1. Create a New Table
- Navigate to the CMS section in the Embeddables Web App
- Click “Edit Tables”
- Click ”+ Add Table”
- Select the “Programmatic Pages” template
2. Configure Your Columns
The template comes with recommended columns, but you can customize them based on your needs. Here’s a suggested structure:| Column Name | Column Key | Type | Purpose |
|---|---|---|---|
| Base Path | base_path | Text | Defines the URL pattern to match with the page |
| Title | title | Text | Page title to display in the h1 |
| Subtitle | subtitle | Text | Page subtitle to display in the h2 |
| Hero Image URL | hero_image_url | Text | URL of the hero image for the page |
| CTA Text | cta_text | Text | Call-to-action button text |
| CTA Link | cta_link | Text | Call-to-action button URL |
3. Add some rows
Add some content by adding at least the first few rows - i.e. the first few pages of content. After the next few steps, you can use this to test out your new programmatic pages.Creating Your Embeddable Template
1. Connect to the CMS
1
Add a Content Source
- Create a new Embeddable
- In the Embeddables Builder, go to Embeddable Options
- Scroll to the CMS section
- Click ”+ Add Content Source”
2
Configure the Connection
- Enter a User Data key (e.g.,
cms) - Select your programmatic pages table
- Under “Which records should get shown?”, choose “Records that match a URL pattern”
- Set the Controller Key to
base_path - Leave “Multiple Records” unchecked since we want one page per record
3
Register the Key
- Add your User Data key to the list of Registered Keys in Embeddable Options
2. Design Your Template
Create a single Embeddable template that will serve as the base for all your SEM pages. Include:- A dynamic title section that pulls from the CMS
- Content areas that can be populated from the CMS
- Image components that use the CMS image URLs
- CTA buttons with dynamic text and links
{{cms.title}}, {{cms.subtitle}} etc to display the content from the CMS.
Previewing and Publishing
To preview the page, open a preview link and add the part of the URL that matches thebase_path column after a ? in the URL. This will match the URL pattern required for the particular page.
For example, if the base_path is seo-services, the URL will be https://preview.embeddables.com/flow_aaaaaaa?savvy_test=false&base_path=/product-iphone.
- Use the
savvy_cmsURL parameter to preview the page with the latest version of the CMS data:savvy_cms=latestto preview the latest versionsavvy_cms=123to preview a specific versionsavvy_cms=stagingto preview the staging version
Best Practices
-
URL Structure
- Use SEO-friendly URL slugs
- Keep URLs short and descriptive
- Use hyphens to separate words
-
Content Management
- Maintain consistent formatting across pages
- Use the rich text editor for content formatting
- Keep meta descriptions between 150-160 characters
-
Testing
- Preview all pages before publishing
- Test different CMS versions using the version control system
- Verify all dynamic content loads correctly
Example Use Cases
-
Service Pages
- Create targeted pages for different services
- Customize content for specific industries
- Use location-based variations
-
Campaign Landing Pages
- Create pages for different marketing campaigns
- A/B test different content variations
- Target specific audience segments
-
Product Pages
- Create pages for different product categories
- Customize content for different price points
- Target specific customer needs
Troubleshooting
-
Content Not Loading
- Verify the URL slug matches exactly
- Check that the Content Source is properly configured
- Ensure you’re using
savvy_test=falsein preview URLs
-
Version Control Issues
- Make sure you’re using the correct
savvy_cmsparameter - Verify that the version exists in the CMS
- Check that you have permission to access the version
- Make sure you’re using the correct

