Description
Altered Digital Migration to Sanity is the companion plugin for the Altered Digital migration service. It provides a guided 11-step wizard that analyzes your WordPress site, generates a quote, connects to your Sanity project, migrates your content, and provides post-migration tooling.
This plugin is an interface to the Altered Digital migration service (a paid service). The content transformation, page builder parsing, SEO extraction, and redirect handling are performed by the Altered Digital Worker (a Cloudflare Worker) and AI service. The plugin sends your WordPress content to that service for processing.
This plugin is not affiliated with or endorsed by Automattic, the WordPress Foundation, or Sanity.io.
What data is sent to the external service?
When you trigger a migration, the plugin sends the following data to the Altered Digital Worker:
- Post content — title, body (raw HTML, Gutenberg blocks, or page builder data), excerpt, slug, publish date, and status for each exported post/page.
- Taxonomy terms — categories and tags (name, slug, description, parent).
- Authors — display name, slug, and bio for post authors.
- Media — featured images and inline images (uploaded by reference URL to your WP site, then transferred to Sanity’s asset CDN).
- ACF fields — Advanced Custom Fields field group data associated with exported posts.
- SEO metadata — Yoast or Rank Math SEO data (meta title, meta description, canonical URL, Open Graph data, Twitter card, schema.org JSON-LD) extracted from post meta.
- Redirect rules — redirect rules from the Redirection plugin (if installed), sent as a batch to the Worker.
- Site analysis — when you click “Analyze my site”: post counts per type, page builder distribution, ACF field inventory, theme name/version, WordPress version, and PHP version.
Content is only sent when you trigger it (clicking wizard buttons) or when the auto-sync feature is explicitly enabled in the Content Settings step (it is off by default). Separately, while you are actively using the migration wizard the plugin sends limited, non-content usage events — see “Usage telemetry” below. Nothing at all is sent on plugin activation.
The plugin does not send: user passwords, API keys stored in other plugins, Stripe/PayPal/SMTP credentials, or any other sensitive post meta. A filter strips known sensitive meta keys before sending post data.
Usage telemetry
The plugin sends limited usage events to the Altered Digital service so installs can be linked to their migration account:
- When — only while you are actively working in the migration wizard, signed in to your Altered Digital account: when a wizard milestone completes (login, scan, quote, payment, connect, content, migrate, approve, paid_full) and once when you connect your Sanity project. No telemetry is sent on plugin activation or page load — the activation-time install ping was removed in 2.4.1.
- What — a stable install ID (a random UUID stored in your own database), your site URL, WordPress/PHP/plugin versions, a multisite flag, and the milestone name. No post content, media, user data, or settings are included.
- How — a fire-and-forget background POST with a 2-second timeout. It never blocks page loads or wizard steps, and failures are silent.
- Where — the Altered Digital Worker endpoint configured on the plugin Settings page.
- Self-host mode — telemetry is skipped entirely when no service URL is configured.
External services
This plugin sends data to the following external services. Each service’s terms of service and privacy policy govern the data it receives:
- Altered Digital Worker (Cloudflare Worker, https://wp-to-sanity-migration.ryan-600.workers.dev) — receives the content you choose to migrate, transforms it, and writes it to your Sanity project. Sent when you trigger a migration or enable auto-sync.
- Terms of Use: https://wptosanity-docs.vercel.app/docs/terms
- Privacy Policy: https://wptosanity-docs.vercel.app/docs/privacy
- Altered Digital AI Service (Vercel) — performs site analysis, quote generation, QA checks, and AI-assisted content transformation for blocks below the confidence threshold. Sent when you run the Analyze step or a migration.
- Terms of Use: https://wptosanity-docs.vercel.app/docs/terms
- Privacy Policy: https://wptosanity-docs.vercel.app/docs/privacy
- Supabase (https://supabase.com) — handles account authentication (signup/login) for the Altered Digital platform. Your account email and password are sent to Supabase’s hosted auth service.
- Terms of Service: https://supabase.com/terms
- Privacy Policy: https://supabase.com/privacy
- Stripe (https://stripe.com) — processes upfront and final payments for the migration service. You are redirected to Stripe Checkout; the plugin does not handle or store card data.
- Legal (Terms): https://stripe.com/legal
- Privacy Policy: https://stripe.com/privacy
- Your Sanity project (https://www.sanity.io) — migrated content is written to the Sanity project you own, using the API token you provide at connect. Sanity.io’s own terms apply to your use of their platform.
- Terms of Service: https://www.sanity.io/legal/tos
- Privacy Policy: https://www.sanity.io/legal/privacy
Page builder support
- Gutenberg — native block editor content
- Elementor — full JSON widget tree parsing
- WPBakery — shortcode-based content parsing
- Divi 4 — shortcode-based content parsing
- Divi 5 — block-comment-based content parsing
- Beaver Builder — full layout data parsing
SEO support
- Yoast SEO — all meta fields extracted and mapped to Sanity’s
seoobject - Rank Math SEO — all meta fields extracted and mapped to Sanity’s
seoobject
Redirect support
- Redirection plugin — active redirect rules extracted and migrated to Sanity
redirectdocuments
Features
- 11-step guided migration wizard
- Automatic site analysis with page builder detection
- Quote generation with upfront and final payment
- Sanity project connection (Project ID, dataset, API token)
- Staging dataset protection (content held in staging until final payment)
- Content type and taxonomy selection
- Full-site or incremental migration
- Real-time migration progress dashboard
- Auto-sync mode (automatic content sync on post publish/update)
- Post-migration tooling:
- Claude Connect — MCP hand-off for Claude Desktop
- Schema Preview — AI-generated Sanity schema review
- Migration Log — per-post migration history
- WP-CLI commands (
wp altered-digital export|analyze|status) - Multisite support (network-activate creates tables on all sites)
- Self-host mode for enterprise deployments
Screenshots




Installation
- Upload the
altered-digital-migration-to-sanityfolder to/wp-content/plugins/ - Activate the plugin through the ‘Plugins’ menu in WordPress
- Navigate to Migration to Sanity in the admin menu
- Follow the 11-step wizard to complete your migration
Self-host mode
For enterprise deployments running your own Worker instance, set the SELF_HOST environment variable on your Cloudflare Worker and configure WP_WEBHOOK_SECRET, SANITY_PROJECT_ID, SANITY_DATASET, and SANITY_API_TOKEN as Worker environment variables. The plugin will use the Worker URL you configure in the Connect step.
See the self-hosting guide for details.
FAQ
-
Do I need a Sanity.io account?
-
Yes. You need a Sanity project with a Project ID, dataset name, and an API token. You can create a free Sanity account at sanity.io. The plugin connects to your project during the Connect step.
-
Do I need to pay to use this plugin?
-
The Altered Digital migration service is paid: fixed-price quotes start at $199 (5 pages included, $15 per extra page), billed 50% upfront (analysis + migration) and 50% after QA passes and you approve the staging content. An optional managed frontend rebuild add-on starts at $1,799. The plugin itself is free and all plugin code is fully available under the GPL. Content is held in a staging dataset until the final payment, at which point it is promoted to your production Sanity dataset.
-
Is my content sent to external servers?
-
Yes. When you trigger a migration, your WordPress content is sent to the Altered Digital Worker for transformation and written to your Sanity project. Content is never sent without your action (or without auto-sync being explicitly enabled) — the only automatic data is the limited usage telemetry described above, which is sent only while you are actively using the wizard. See the “What data is sent” section above.
-
Does the plugin modify my WordPress site?
-
No. The plugin reads your content and sends it to the external service. It does not modify your posts, pages, themes, or database content. The only database writes are to its own tracking tables (
adms_migration_log) and its own settings option (adms_settings). -
Does the plugin work with multisite?
-
Yes. Network-activate the plugin to create tracking tables on all sites. Network admin settings are pushed to all subsites.
-
Can I use WP-CLI?
-
Yes. The plugin registers
wp altered-digital export,wp altered-digital analyze, andwp altered-digital statuscommands.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Altered Digital Migration to Sanity” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Altered Digital Migration to Sanity” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
2.4.1
- Activation no longer contacts any external server (wp.org guideline 7): the 2.3.0 activation-time install ping and its admin_init upgrade backfill were removed. Telemetry now begins only with wizard milestones, while you are signed in to your Altered Digital account
- Plugin-rebuild REST handler’s PHP time limit raised from 120s to 190s so it can no longer cut off the 180s AI rebuild call
2.4.0
- Renamed for the WordPress.org directory: new plugin name, slug, and text domain (“Altered Digital Migration to Sanity” / altered-digital-migration-to-sanity)
- All PHP class/constant/option/hook/table prefixes lengthened to 4+ characters (ADMS_ / adms_); your settings, wizard progress, install identity, and migration log are migrated automatically on first load
- Removed the v1 back-compat layer (legacy class alias, constants, init function, and v1 REST namespace)
- uninstall.php now guarded with WP_UNINSTALL_PLUGIN only
- Documented external services with terms and privacy policy links in the readme
2.3.1
- Human error copy on sign-in/signup failures (wrong password no longer shows the raw code “auth_failed”)
- Connect step reports the actual problem (missing Project ID, expired session, or missing service token) instead of a blanket “session expired”
- Funnel telemetry: new ‘login’ and ‘paid_full’ milestone events (final-payment completion is now tracked)
2.3.0
- Install telemetry: activation pings the service with site URL + WP/PHP/plugin versions (fire-and-forget, never blocks activation)
- Wizard funnel telemetry: milestone completions (scan, quote, payment, connect, content, migrate, approve) are logged for the install
- Stable install identity stitches installs to tenants at connect
2.2.0
- Retuned pricing: $199 base (incl. 5 pages), $15/extra page, complexity multiplier (low x1.0 / medium x1.25 / high x1.5)
- Add-on catalog now selectable at checkout (hands-on assistance, schema design, priority support, QA review)
- New managed “Altered Digital Rebuild” add-on with live estimate card
- Final-50% payment assurance: 45-day deadline, tiered reminders, overdue content lock with pay-to-unlock
2.0.0
- Complete rewrite as a guided wizard
- Multi-tenant support with Supabase authentication
- Staging dataset payment protection
- SEO metadata extraction (Yoast + Rank Math)
- Redirect rule migration (Redirection plugin)
- Post-migration tooling: Claude Connect, Schema Preview, Migration Log
- WP-CLI commands and multisite support
- Beaver Builder and Divi 5 parser support
1.0.0
- Initial release: single-tenant WordPress to Sanity migration
