Textpattern CMS is a PHP-based content management system that uses its own tag-based template language (Txp tags). It stores templates in the database (not as files), which are edited through the admin interface at Presentation > Pages and Presentation > Forms. Analytics integration uses Textpattern's page templates and form partials.
Integration Architecture
Textpattern provides three integration paths:
- Page Templates -- Edit page templates at Presentation > Pages. Each page template controls the full HTML output for pages that use it. Add tracking scripts to the default page template for global coverage.
- Forms (Partials) -- Reusable template fragments at Presentation > Forms. Create a
trackingform and include it with<txp:output_form form="tracking" />in page templates. - Plugins -- Textpattern plugins installed via Admin > Plugins. Some community plugins provide analytics integration, though most are targeting older analytics versions.
Available Integrations
Analytics Platforms
- Page template injection (direct gtag.js)
- GTM-based GA4 via form partial (recommended)
Tag Management
- Page template head/body injection
- Form partial for reusable GTM snippet
Marketing Pixels
- Via GTM container (recommended)
- Page template head injection
Page Template Integration with Data Layer
Edit your default page template at Presentation > Pages > default to add GTM and a data layer using Txp tags:
<!DOCTYPE html>
<html lang="<txp:lang />" dir="<txp:text item="lang_dir" />">
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;
j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;
f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-XXXX');</script>
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'pageTitle': '<txp:page_title />',
'sectionName': '<txp:section />',
'articleId': '<txp:if_individual_article><txp:article_id /></txp:if_individual_article>',
'category1': '<txp:category1 title="1" />',
'category2': '<txp:category2 title="1" />',
'author': '<txp:if_individual_article><txp:author /></txp:if_individual_article>',
'language': '<txp:lang />'
});
</script>
<txp:css format="link" />
</head>
<body>
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<txp:article />
</body>
</html>
Textpattern Tags for Data Layer
Textpattern provides content-specific tags that map to analytics dimensions:
| Txp Tag | Data Layer Variable | Notes |
|---|---|---|
<txp:section /> |
sectionName |
Current section (like a category) |
<txp:category1 /> |
category1 |
Primary article category |
<txp:category2 /> |
category2 |
Secondary article category |
<txp:author /> |
author |
Article author name |
<txp:article_id /> |
articleId |
Unique article ID |
<txp:posted format="%Y-%m-%d" /> |
publishDate |
Article publish date |
<txp:page_title /> |
pageTitle |
Full page title |
Platform Limitations
Templates stored in database. Textpattern stores templates in the database, not as files. There is no file-based template editing, no version control for templates, and no way to deploy template changes via CI/CD without database manipulation.
No template file access. You cannot use a code editor to modify templates. All editing happens through the Textpattern admin's textarea interface. This makes complex JavaScript (like data layer construction with conditionals) harder to develop and debug.
Plugin ecosystem is small and aging. Textpattern's plugin community has declined. Most analytics plugins target Google Analytics Universal (deprecated). GA4 and GTM implementations are typically done via manual template editing.
Conditional tag limitations. Textpattern's <txp:if_*> conditional tags work differently from PHP conditionals. Complex data layer logic with multiple conditions requires nested Txp tags that can be difficult to read and maintain.
No ecommerce. Textpattern does not include ecommerce functionality. Ecommerce tracking is not applicable for standard installations.
Performance Considerations
- Lightweight output. Textpattern generates lean HTML with minimal overhead. The relative impact of adding tracking scripts is proportionally higher.
- Database template loading. Templates are loaded from the database on each request (unless cached). This is fast for simple templates but adds database query overhead compared to file-based template systems.
- Plugin script injection. Some Textpattern plugins inject JavaScript. Audit active plugins to avoid redundant analytics scripts.
Recommended Integration Priority
- Add GTM to default page template -- Edit at Presentation > Pages
- Create tracking form partial -- Reusable across multiple page templates
- Build section and category data layer -- Use Txp tags for content context
- Configure GA4 via GTM -- Map Textpattern sections to GA4 content groups
Next Steps
For general integration concepts, see the integrations overview.