links.10x.in/docs/end-user/playbooks/campaign-site-structure-for-marketers Published:

Playbook: Campaign Site Structure for Marketers

Last updated: 2026-03-06

1. Purpose and when to use this

Use this playbook when you want campaign-specific detail pages on links.10x.in, each with a unique slug, structured schema JSON, and optional login gating (FREE_WITH_LOGIN).

Typical marketer goals:

  • Launch campaigns with reusable page structure blocks.
  • Reuse one campaign framework across channels with small schema changes.
  • Keep sensitive campaign content visible only to authenticated visitors.
  • Enable API/MCP-driven content operations for fast experimentation.

2. What this feature gives you

  • One campaign can reference one detail page slug (detailsPageSlug) for direct lookup.
  • Page metadata stores campaign structure references (campaignId, schemaS3Key, schemaVersion, structureType).
  • Schema JSON is versioned in S3 with deterministic keys:
  • site-structure/{handle}/campaigns/{campaignId}/v{version}.json
  • Routes available via JWT control-plane and PAT public-handle endpoints.
  • MCP tools available:
  • campaign_structure_get
  • campaign_structure_upsert
  • campaign_structure_publish

3. Marketer use-case matrix

Marketing purposeRecommended page setupSchema emphasisAccess mode
Product launchFull long-form campaign page + FAQs + CTA striphero, proof, offer ladder, CTA IDsFREE_WITH_LOGIN when pre-launch; PUBLIC post-launch
Lead magnetShort promise page + form + social prooflead form module, attribution metadataFREE_WITH_LOGIN
Webinar / event registrationSession agenda + speaker block + registration CTAschedule sections, seat limits, event metadataFREE_WITH_LOGIN
Retargeting campaignVariant-specific headline/offer by segmentsegment/module mapping, retarget tagsFREE_WITH_LOGIN
Influencer or partner campaignPartner-specific narrative and compliance footerpartner metadata, source tags, legal blockPUBLIC or FREE_WITH_LOGIN
Regional offer pageGeo/currency-specific variantsregion modules, pricing/currency configFREE_WITH_LOGIN until QA passes

4. Channel workflow options

Option A: Local marketer app

Use the local app built for this flow:

  • apps/site-structure-web
  • Set API Base URL, PAT, handle, campaignId.
  • Run Fetch, Upsert, then Publish (FREE_WITH_LOGIN).

Option B: API automation

PAT routes:

  • PUT /v2/public/handles/{handle}/site-structure/campaigns/{campaignId}
  • GET /v2/public/handles/{handle}/site-structure/campaigns/{campaignId}
  • POST /v2/public/handles/{handle}/site-structure/campaigns/{campaignId}/publish

Required scopes:

  • pages.read for fetch
  • pages.write for upsert/publish

Option C: MCP-assisted operations

From connected assistants/tools:

  • campaign_structure_get for retrieval and QA checks
  • campaign_structure_upsert for schema edits
  • campaign_structure_publish for controlled release

OAuth/PAT scope requirements mirror API:

  • pages.read
  • pages.write

5. Minimal schema examples by purpose

Product launch

{
  "modules": [
    { "id": "hero", "type": "hero_banner" },
    { "id": "proof", "type": "social_proof" },
    { "id": "offer", "type": "offer_grid" },
    { "id": "faq", "type": "faq" }
  ],
  "seo": { "title": "Spring Launch" }
}

Lead capture

{
  "modules": [
    { "id": "hero", "type": "lead_hook" },
    { "id": "form", "type": "email_capture" }
  ],
  "tracking": { "primaryEvent": "lead" }
}

Webinar registration

{
  "modules": [
    { "id": "hero", "type": "event_hero" },
    { "id": "agenda", "type": "timeline" },
    { "id": "speakers", "type": "speaker_cards" },
    { "id": "cta", "type": "registration_cta" }
  ],
  "event": { "capacity": 500 }
}

6. Industry presets (ready-to-copy schema kits)

Use these as base kits in campaign_structure_upsert.payload.schema, then edit labels/content IDs.

Ecommerce preset

{
  "modules": [
    { "id": "hero", "type": "hero_banner", "variant": "product_drop" },
    { "id": "price", "type": "price_compare" },
    { "id": "proof", "type": "social_proof" },
    { "id": "faq", "type": "faq" },
    { "id": "cta", "type": "checkout_cta" }
  ],
  "commerce": {
    "primaryEvent": "purchase",
    "currency": "USD",
    "inventoryHint": "limited"
  },
  "segmentation": {
    "audiences": ["new_visitor", "cart_abandoner", "vip_repeat"]
  },
  "seo": { "title": "Campaign Offer | Brand" }
}

B2B SaaS preset

{
  "modules": [
    { "id": "hero", "type": "value_prop_hero" },
    { "id": "pain", "type": "pain_points" },
    { "id": "features", "type": "feature_grid" },
    { "id": "proof", "type": "case_study_cards" },
    { "id": "roi", "type": "roi_calculator" },
    { "id": "cta", "type": "demo_request_form" }
  ],
  "lead": {
    "primaryEvent": "lead",
    "qualificationFields": ["team_size", "role", "timeline"]
  },
  "segmentation": {
    "audiences": ["cold_prospect", "retargeted_visitor", "high_intent_trial"]
  },
  "seo": { "title": "See How Product Solves <Problem>" }
}

Events preset

{
  "modules": [
    { "id": "hero", "type": "event_hero" },
    { "id": "agenda", "type": "timeline" },
    { "id": "speakers", "type": "speaker_cards" },
    { "id": "venue", "type": "venue_map" },
    { "id": "cta", "type": "registration_cta" },
    { "id": "waitlist", "type": "waitlist_form" }
  ],
  "event": {
    "primaryEvent": "registration",
    "timezone": "America/New_York",
    "capacity": 500
  },
  "segmentation": {
    "audiences": ["early_access", "general_admission", "partner_invite"]
  },
  "seo": { "title": "Event Name 2026 | Register Now" }
}

Creators preset

{
  "modules": [
    { "id": "hero", "type": "creator_story_hero" },
    { "id": "media", "type": "media_gallery" },
    { "id": "offer", "type": "offer_stack" },
    { "id": "proof", "type": "community_proof" },
    { "id": "optin", "type": "newsletter_optin" },
    { "id": "merch", "type": "merch_highlight" },
    { "id": "disclosure", "type": "sponsor_disclosure" }
  ],
  "creator": {
    "primaryEvent": "subscriber_signup",
    "monetization": ["newsletter", "merch", "sponsor"]
  },
  "segmentation": {
    "audiences": ["new_followers", "returning_fans", "high_engagement"]
  },
  "seo": { "title": "Creator Campaign Hub | Latest Drops" }
}

7. Governance and QA checklist

  1. Ensure slug uniqueness before first publish.
  2. Confirm campaign health and test conversion paths.
  3. Validate schema JSON parses and modules render in preview.
  4. Keep pre-release pages in FREE_WITH_LOGIN until approved.
  5. Publish only after analytics and attribution tags are verified.

8. Common failure modes and fixes

  • slug_conflict:
  • Fix: choose a page slug not used by any link slug.
  • campaign_structure_not_configured:
  • Fix: run upsert first to bind detailsPageSlug.
  • schema_not_found or schema_invalid_json:
  • Fix: re-upsert schema to create a fresh valid S3 version.
  • insufficient_scope on PAT/MCP:
  • Fix: add pages.read and/or pages.write scopes.

9. Related docs