CMS Patches
How SitePulse auto-applies and manually applies approved rewrite suggestions to WordPress, Webflow, and Drupal via CMS integrations.
Once you approve rewrite suggestions, SitePulse can push those changes directly to your CMS. This page explains how the patching system works — what's auto-applied, what requires manual action, and how suggestion types map to CMS fields.
Two tiers of patching
| Tier | Behavior | Example types |
|---|---|---|
| Auto-apply | Patch is sent directly to the CMS API without additional confirmation | title, meta_description, image_alt, structured_data |
| Manual | Patch is shown as a diff you must confirm before sending | heading_h1, faq_schema, howto_schema, content_suggestion, paragraph_split |
Auto-apply is used for metadata fields that have a single canonical CMS field (e.g. Yoast SEO title in WordPress) and low risk of breaking page layout. Manual apply is used for content body fields where the change is more extensive or the field mapping is ambiguous.
How to enable CMS patching
CMS patching requires a CMS integration on the project. Go to Project Settings → Integrations and connect your CMS:
Once a CMS is connected, approved suggestions automatically appear in the CMS Patches tab of the audit detail page.
Suggestion type → CMS field mapping
The table below shows which suggestion types are supported for each CMS and what field they map to.
WordPress
| Suggestion type | CMS field | Auto/Manual |
|---|---|---|
title | Yoast _yoast_wpseo_title (falls back to post_title) | Auto |
meta_description | Yoast _yoast_wpseo_metadesc | Auto |
image_alt | wp_update_attachment_metadata alt field | Auto |
structured_data | Yoast _yoast_wpseo_schema_* or injected <script type="application/ld+json"> | Auto |
heading_h1 | post_title (for post title H1) | Manual |
faq_schema | Injected JSON-LD in post content | Manual |
howto_schema | Injected JSON-LD in post content | Manual |
content_suggestion | post_content | Manual |
paragraph_split | post_content | Manual |
Webflow
| Suggestion type | CMS field | Auto/Manual |
|---|---|---|
title | seo-title field on CMS item | Auto |
meta_description | seo-description field on CMS item | Auto |
image_alt | alt field on image field type | Auto |
structured_data | Designer-side custom code (requires manual embed) | Manual |
heading_h1 | name field (slug name) or richtext body | Manual |
faq_schema | Designer-side custom code | Manual |
content_suggestion | Rich text body field | Manual |
Drupal
| Suggestion type | CMS field | Auto/Manual |
|---|---|---|
title | field_meta_tags (Metatag module) or title field | Auto |
meta_description | field_meta_tags description | Auto |
image_alt | field_image[alt] | Auto |
structured_data | Schema.org module field or custom field | Auto |
heading_h1 | title field | Manual |
faq_schema | Body field or dedicated FAQ field | Manual |
content_suggestion | body or long text field | Manual |
Applicable: false cases
Some suggestion types cannot be auto-applied through the CMS API for structural reasons:
reading_level_fix,language_simplification,unique_phrasing— these require rewriting body content inline, which requires parsing the CMS rich text field and preserving formatting. Currently manual-only.brand_voice_fix— brand voice edits require human judgment about tone; always manual.keyword_optimization— keyword changes in headings require editorial review; always manual.link_text— link text changes require finding the specific anchor within the body HTML; manual.
These suggestion types appear in the Rewrites tab but do not appear in the CMS Patches tab. You must copy the suggested text and apply it manually in your CMS editor.
Patch confirmation
For manual-tier patches, the CMS Patches tab shows:
- Suggestion type and which field will be updated
- Diff view — the existing field value (red) vs the proposed value (green)
- Confirm button — sends the patch to the CMS API
- Skip button — dismisses this patch without applying it
After confirmation, the patch status changes from pending_patch → patched. If the CMS API returns an error, the status changes to patch_failed with the error message shown inline.
Deepcopy-safe persistence
CMS patch payloads are stored in the AuditResult JSONB details field and are safe to serialize and reload across sessions. Each patch record is a standalone object (no references to mutable state), so approved suggestions survive page reloads and can be re-reviewed at any time.
What happens if no CMS is connected?
If no CMS integration is configured on the project, the CMS Patches tab shows a "Connect a CMS" prompt. Rewrite suggestions still work — you can approve and review them — but no patch is sent. You can copy the suggested text from the suggestion card and apply it manually.
Webflow structured data limitation
Webflow's CMS API does not support injecting arbitrary <script> tags into page head or body via the API. For structured data (faq_schema, howto_schema, structured_data) on Webflow sites, the patch shows you the JSON-LD block to copy, and you add it via a Designer embed element. This is a Webflow platform limitation, not a SitePulse one.