Skip to main content

Capell uses essential storage for sessions, security, and interface preferences. Analytics and marketing storage stay off unless you accept them.

Cookie Policy
Campaign Studio marketplace hero artwork.

Campaign Studio

Campaign Studio gives Capell teams campaign groups, landing pages, CTA blocks, conversion goals, attribution, and reporting.

Overview

What Campaign Studio provides

Campaign Studio gives Capell teams campaign groups, landing pages, CTA blocks, conversion goals, attribution, and reporting.

It is built for marketers who need measurable campaign pages without asking developers for a bespoke build every time.

Editors can connect campaign content, tracking, and conversion intent in one package-owned workflow.

Developers keep campaign behaviour inside a clear extension boundary instead of scattering growth code across the app.

Use it when landing pages need to be repeatable, measurable, and native to Capell.

/ 10
10 captures Visual gallery
Install

Install on your Capell site in three steps.

Each extension ships as a standard Composer package. Purchases unlock account access immediately before you install.

Support
First-party Capell support for active marketplace customers.
Data access
Reads and writes Capell content structures required by the package; public output receives rendered content only.
  1. 01

    Require the package

    composer require capell-app/campaign-studio
  2. 02

    Register the extension

    php artisan capell:extension:enable capell-app-campaign-studio
  3. 03

    Clear schema cache

    php artisan capell:admin:clear-schemas-cache
Works well with this

Related extensions

Browse the packages that usually pair with Campaign Studio or buy the suite it belongs to.

Included in suites
Marketing launch

Growth Campaign Suite

Launch measurable campaigns in Capell with landing pages, form capture, SEO readiness, site search, and redirect recovery in one buyer path.

Campaign Studio Form Builder SEO Suite Site Search URL Manager
Package README Install impact, package shape, common pitfalls, and maintenance notes. Open

Campaign Studio

Campaign Studio adds campaign groups, landing-page variants, audience targeting, experiments, CTA widgets, conversion goals, UTM attribution, funnel reporting, and conversion reporting to Capell.

At A Glance

  • Package: capell-app/campaign-studio
  • Namespace: Capell\CampaignStudio\
  • Surfaces: Filament admin, frontend route/render hook, console, database
  • Service providers: packages/campaign-studio/src/Providers/AdminServiceProvider.php, packages/campaign-studio/src/Providers/CampaignStudioServiceProvider.php, packages/campaign-studio/src/Providers/FrontendServiceProvider.php
  • Capell dependencies: capell-app/admin, capell-app/core, capell-app/form-builder, capell-app/frontend, capell-app/insights
  • Third-party dependencies: lorisleiva/laravel-actions, spatie/laravel-data, spatie/laravel-package-tools

Why It Helps Your Capell Workflow

  • Connects campaign landing pages, landing-page variants, audience targeting, experiments, CTA widgets, UTM attribution, conversion goals, funnel reporting, and reporting into one growth workflow.
  • Helps owners see which campaigns and pages are producing conversions without stitching together custom admin widgets.
  • Gives developers package-owned Actions and models for attribution, funnels, overview stats, and campaign URLs.

Best Used With

What It Adds

Campaign Studio adds campaign groups, landing-page variants, audience targeting, experiments, CTA widgets, conversion goals, UTM attribution, funnel reporting, and conversion reporting to Capell.

  • Campaign Filament resources for groups, landing pages, goals, and CTA widgets.
  • Campaign dashboard widgets.
  • Page schema extender for campaign fields.
  • core layout builder widget configurators for campaign hero, CTA, and lead form widgets.
  • Landing-page variant selection from UTM audience data, with optional experiment sync when Experiments is installed.
  • Campaign experiment result readout from synced Experiments winner reports, including per-variant conversion rates and lift over the control variant.
  • Campaign hero widget CTAs can append configured UTM metadata through the shared campaign URL builder.
  • Campaign conversion funnel reporting from conversion goals and recorded conversions.
  • Conversion recording actions for page views, CTA clicks, and form submissions.
  • Public post-load conversion capture for page-view and CTA-click goals through the Campaign Studio beacon.

Why It Matters

For developers: Connects Capell pages, FormBuilder, Insights, and core layout builder APIs through explicit actions and listener classes instead of inline resource logic.

For teams: Lets marketing and editorial teams connect landing pages to goals and see which campaign-studio convert.

Built With

This package makes its Composer dependencies visible because they are part of the value proposition, not just plumbing. When an upstream package has a public repository, its linked preview card points readers back to the maintainers so their work gets proper credit.

Capell packages used here

Open-source packages used here

  • Laravel Actions - single-purpose action classes that keep package workflows out of controllers and Filament resources.
  • Spatie Laravel Data - typed data objects for package boundaries, form state, settings, and structured results.
  • Spatie Laravel Package Tools - Laravel package bootstrapping for config, migrations, commands, translations, and service provider setup.

Linked package previews

Laravel Actions GitHub preview

Spatie Laravel Data GitHub preview

Spatie Laravel Package Tools GitHub preview

Screens And Workflow

Screenshots are generated from docs/screenshots.json during package deployment.

  • Campaign groups index.
  • Campaign landing pages index.
  • Campaign conversion goals form.
  • CTA widget form.
  • Campaign dashboard widgets.
  • Frontend landing page with campaign widgets.

Technical Shape

  • CampaignStudioServiceProvider, AdminServiceProvider, and FrontendServiceProvider register package surfaces.
  • Config file: capell-campaign-studio.php.
  • Migrations create campaign groups, goals, landing pages, CTA widgets, and conversions.
  • Filament resources cover each owned model.
  • Frontend routes and render hooks add the campaign conversion beacon and public tracker script.
  • Listeners sync landing pages, editorial calendar events, Site Discovery URLs, and form submission conversions.
  • BuildCampaignExperimentResultsAction reads synced campaign experiment results when capell-app/experiments is installed.

Code Map

Area Path Purpose
Actions packages/campaign-studio/src/Actions Domain operations. Test these directly where possible.
Data packages/campaign-studio/src/Data Structured payloads, form state, view models, and integration data.
Enums packages/campaign-studio/src/Enums Persisted states and Filament option values.
Models packages/campaign-studio/src/Models Eloquent records owned by the package.
Filament packages/campaign-studio/src/Filament Admin resources, pages, widgets, and settings UI.
Providers packages/campaign-studio/src/Providers Registration, extension hooks, routes, migrations, and resources.
Resources packages/campaign-studio/resources Views, translations, assets, and package resources.
Config packages/campaign-studio/config Package configuration and publishable config.
Database packages/campaign-studio/database Migrations, seeders, and settings migrations.
Tests packages/campaign-studio/tests Package-level Pest coverage.

Admin Surface

  • Resources: CampaignConversionGoalResource, CampaignCtaWidgetResource, CampaignGroupResource, CampaignLandingPageResource.
  • Pages: CreateCampaignConversionGoal, CreateCampaignCtaWidget, CreateCampaignGroup, CreateCampaignLandingPage, EditCampaignConversionGoal, EditCampaignCtaWidget, EditCampaignGroup, EditCampaignLandingPage, ListCampaignConversionGoals, ListCampaignCtaWidgets, ListCampaignGroups, ListCampaignLandingPages.
  • Widgets: CampaignCtaWidgetWidgetConfigurator, CampaignHeroWidgetConfigurator, CampaignLeadFormWidgetConfigurator, CampaignOverviewStatsWidget, TopCampaignStudioWidget, TopLandingPagesWidget.

Commands

  • capell:campaign-studio-install-layouts {--force : Update existing campaign layouts} (packages/campaign-studio/src/Console/Commands/InstallCampaignLayoutsCommand.php)

Frontend Conversion Capture

Campaign Studio injects a small public tracker at the frontend BodyEnd render hook. The tracker posts to POST /capell/campaigns/conversions, reads the existing Insights visit id from local storage or cookie when available, records page-view conversions for campaign landing pages, and records CTA-click conversions from elements with data-campaign-goal. CTA-click goals are resolved inside the campaign landing page matched from the submitted URL; unresolved URLs are ignored rather than attributed to another campaign with the same goal key.

The tracker is post-load and contains no admin/editor state, signed editor URLs, model ids, or field paths. Because Campaign Studio can render UTM-aware landing-page variants, its frontend contribution is recorded as non-cacheable with UTM variance metadata; HTML cache should not store those rendered pages, while static HTML that already exists can still load the tracker and record conversions after the response is served.

Data And Persistence

  • campaign_groups belong to sites.

  • campaign_landing_pages belong to groups and target pages.

  • campaign_conversion_goals define measurable outcomes.

  • campaign_cta_widgets store CTA content.

  • campaign_conversions connect goals, landing pages, insights visits/events, and attribution JSON.

  • Models: CampaignConversion, CampaignConversionGoal, CampaignCtaWidget, CampaignGroup, CampaignLandingPage.

  • Migrations: 2026_05_10_190843_01_create_campaign_groups_table.php, 2026_05_10_190843_02_create_campaign_conversion_goals_table.php, 2026_05_10_190843_03_create_campaign_landing_pages_table.php, 2026_05_10_190843_04_create_campaign_cta_widgets_table.php, 2026_05_10_190843_05_create_campaign_conversions_table.php.

  • Config: packages/campaign-studio/config/capell-campaign-studio.php.

  • Data objects live in src/Data/; use them for payloads, form state, and view models.

Extension Points

  • Listeners: RecordFormSubmissionConversion, SyncCampaignLandingPageFromPage.
  • Register Capell extension points, routes, migrations, settings, render hooks, and resources from service providers.

Install Impact

  • Adds campaign admin navigation and database tables.
  • Adds campaign dashboard widgets.
  • Adds config keys for conversion cookie, UTM keys, table names, tracker route prefix, and layout presets.
  • Adds attribution.lookback_days so stale Insights visits can be excluded from conversion identity and attribution.
  • May use Insights events and FormBuilder submissions when those packages are installed.
  • Registers POST /capell/campaigns/conversions for same-origin page-view and CTA-click conversion capture.

Install And Setup

  • Install with composer require capell-app/campaign-studio in the host Capell application.
  • Run migrations through the host application package install flow.
  • In this repository, verify package changes with vendor/bin/pest; do not use php artisan.

Admin And Access

  • CampaignConversionGoalResource (packages/campaign-studio/src/Filament/Resources/CampaignConversionGoals/CampaignConversionGoalResource.php)

  • CreateCampaignConversionGoal (packages/campaign-studio/src/Filament/Resources/CampaignConversionGoals/Pages/CreateCampaignConversionGoal.php)

  • EditCampaignConversionGoal (packages/campaign-studio/src/Filament/Resources/CampaignConversionGoals/Pages/EditCampaignConversionGoal.php)

  • ListCampaignConversionGoals (packages/campaign-studio/src/Filament/Resources/CampaignConversionGoals/Pages/ListCampaignConversionGoals.php)

  • CampaignCtaWidgetResource (packages/campaign-studio/src/Filament/Resources/CampaignCtaWidgets/CampaignCtaWidgetResource.php)

  • CreateCampaignCtaWidget (packages/campaign-studio/src/Filament/Resources/CampaignCtaWidgets/Pages/CreateCampaignCtaWidget.php)

  • EditCampaignCtaWidget (packages/campaign-studio/src/Filament/Resources/CampaignCtaWidgets/Pages/EditCampaignCtaWidget.php)

  • ListCampaignCtaWidgets (packages/campaign-studio/src/Filament/Resources/CampaignCtaWidgets/Pages/ListCampaignCtaWidgets.php)

  • CampaignGroupResource (packages/campaign-studio/src/Filament/Resources/CampaignGroups/CampaignGroupResource.php)

  • CreateCampaignGroup (packages/campaign-studio/src/Filament/Resources/CampaignGroups/Pages/CreateCampaignGroup.php)

  • EditCampaignGroup (packages/campaign-studio/src/Filament/Resources/CampaignGroups/Pages/EditCampaignGroup.php)

  • ListCampaignGroups (packages/campaign-studio/src/Filament/Resources/CampaignGroups/Pages/ListCampaignGroups.php)

  • CampaignLandingPageResource (packages/campaign-studio/src/Filament/Resources/CampaignLandingPages/CampaignLandingPageResource.php)

  • CreateCampaignLandingPage (packages/campaign-studio/src/Filament/Resources/CampaignLandingPages/Pages/CreateCampaignLandingPage.php)

  • EditCampaignLandingPage (packages/campaign-studio/src/Filament/Resources/CampaignLandingPages/Pages/EditCampaignLandingPage.php)

  • ListCampaignLandingPages (packages/campaign-studio/src/Filament/Resources/CampaignLandingPages/Pages/ListCampaignLandingPages.php)

  • Gate: CampaignOverviewStatsWidget: admin, super_admin

  • Gate: TopCampaignStudioWidget: admin, super_admin

  • Gate: TopLandingPagesWidget: admin, super_admin

Common Pitfalls

  • Install dependent packages before expecting attribution from form-builder or insights.
  • Check UTM keys before launch.
  • Configure campaign hero UTM fields when hero CTAs should carry campaign attribution.
  • Create conversion goals before reporting on landing page success.
  • Keep the Insights tracker enabled when visitor-level deduplication is required for CTA/page-view conversions.
  • Tune capell-campaign-studio.attribution.lookback_days for the marketing team's attribution policy.
  • Treat UTM-targeted campaign variant pages as dynamic frontend output; do not rely on static HTML cache to personalize variant selection.

Docs

Testing

Run package tests from the repository root:

vendor/bin/pest packages/campaign-studio/tests --configuration=phpunit.xml

Maintenance Notes

  • Put behaviour changes in src/Actions/; UI classes, commands, and controllers should call actions instead of owning domain logic.
  • Use package Data classes at boundaries instead of passing anonymous arrays between layers.
  • Use backed enums for persisted values and enum labels for Filament options.
Overview A shorter package overview for marketplace and account review. Open

CampaignStudio

Status: Available, schema-owning · Kind: package · Tier: premium · Bundle: growth · Contexts: admin, frontend · Product group: Capell Growth

This page is the consolidated implementation overview for the CampaignStudio package. It is extracted from the package README, service providers, migrations, config files, routes, resources, models, actions, and the shared Capell ERD notes where available.

What This Package Adds

CampaignStudio adds campaign groups, landing pages, CTA widgets, conversion goals, UTM attribution, and conversion reporting to Capell.

  • Campaign Filament resources for groups, landing pages, goals, and CTA widgets.
  • Campaign dashboard widgets.
  • Page schema extender for campaign fields.
  • core layout builder widget configurators for campaign hero, CTA, and lead form widgets.
  • Campaign hero widget CTAs can append configured UTM metadata through the shared campaign URL builder.
  • Conversion recording actions for page views, CTA clicks, and form submissions.
  • Public post-load conversion capture for page-view and CTA-click goals through the Campaign Studio beacon.
  • UTM landing-page variant resolution only considers linked pages that are currently public-visible under Capell's page publish-date rules.
  • Optional Experiments integration that syncs campaign landing-page variants and conversion goals into campaign-scoped experiment definitions.
  • Campaign experiment result readout from synced Experiments winner reports, including per-variant conversion rates and lift over the control variant.
  • Scheduled campaign status automation that moves campaign groups from Scheduled to Active and Active to Ended as their date windows open and close.

Developer Notes

Connects Capell pages, FormBuilder, Insights, and core layout builder APIs through explicit actions and listener classes instead of inline resource logic.

  • CampaignStudioServiceProvider, AdminServiceProvider, and FrontendServiceProvider register package surfaces.
  • Config file: capell-campaign-studio.php.
  • Migrations create campaign groups, goals, landing pages, CTA widgets, and conversions.
  • Filament resources cover each owned model.
  • Frontend routes and render hooks add the campaign conversion beacon and public tracker script.
  • Listeners sync landing pages and form submission conversions.
  • CampaignConverted is dispatched when a conversion row is newly recorded, giving Automation Studio and other packages a stable conversion trigger without importing Campaign Studio internals.
  • SyncCampaignExperimentAction bridges to Experiments when that package is installed. It turns campaign landing pages into experiment variants, conversion goals into experiment goals, and the campaign UTM value into an audience rule.
  • BuildCampaignExperimentResultsAction reads back campaign-scoped Experiments winner reports through typed Campaign Studio data.

Operational Notes

Lets marketing and editorial teams connect landing pages to goals and see which campaign-studio convert.

  • Adds campaign admin navigation and database tables.
  • Adds campaign dashboard widgets.
  • Adds config keys for conversion cookie, UTM keys, table names, tracker route prefix, and layout presets.
  • Adds attribution.lookback_days so stale Insights visits can be excluded from conversion identity and attribution.
  • May use Insights events and FormBuilder submissions when those packages are installed.
  • May sync campaign-scoped experiments when capell-app/experiments is installed.
  • Registers POST /capell/campaigns/conversions for same-origin page-view and CTA-click conversion capture.
  • Registers capell:campaign-studio-sync-statuses and schedules it every five minutes so campaign group statuses follow starts_at and ends_at.

Frontend Conversion Capture

Campaign Studio injects a small public tracker at the frontend BodyEnd render hook. The tracker posts to POST /capell/campaigns/conversions, reads the existing Insights visit id from local storage or cookie when available, records page-view conversions for campaign landing pages, and records CTA-click conversions from elements with data-campaign-goal. CTA-click goals are resolved inside the campaign landing page matched from the submitted URL; unresolved URLs are ignored rather than attributed to another campaign with the same goal key.

The tracker is post-load and contains no admin/editor state, signed editor URLs, model ids, or field paths. Because Campaign Studio can render UTM-aware landing-page variants, its frontend contribution is recorded as non-cacheable with UTM variance metadata; HTML cache should not store those rendered pages, while static HTML that already exists can still load the tracker and record conversions after the response is served.

Landing Page Variant Resolution

ResolveCampaignLandingPageVariantAction matches utm_content before utm_term, then falls back to the primary landing page and finally the first available landing page. Each candidate must have a linked Capell page passing the same publishedDate() scope used by the public frontend loader, so scheduled or expired pages are skipped and cannot be selected as campaign variants.

Data And Retention

  • campaign_groups belong to sites.
  • campaign_landing_pages belong to groups and target pages.
  • campaign_conversion_goals define measurable outcomes.
  • campaign_cta_widgets store CTA content.
  • campaign_conversions connect goals, landing pages, insights visits/events, and attribution JSON.

Screenshot Plan

  • Campaign groups index.
  • Campaign landing pages index.
  • Campaign conversion goals form.
  • CTA widget form.
  • Campaign dashboard widgets.
  • Frontend landing page with campaign widgets.

Screenshots

Pitfalls

  • Install dependent packages before expecting attribution from form-builder or insights.
  • Check UTM keys before launch.
  • Configure campaign hero UTM fields when hero CTAs should carry campaign attribution.
  • Create conversion goals before reporting on landing page success.
  • Keep the Insights tracker enabled when visitor-level deduplication is required for CTA/page-view conversions.
  • Tune capell-campaign-studio.attribution.lookback_days for the marketing team's attribution policy.
  • Publish linked Capell pages before expecting Campaign Studio to serve them as UTM-targeted variants.
  • Treat UTM-targeted campaign variant pages as dynamic frontend output; do not rely on static HTML cache to personalize variant selection.
  • Ensure the host scheduler runs so scheduled campaigns automatically become active and ended campaigns close on time.

Verification

  • Run vendor/bin/pest packages/campaign-studio/tests when package tests exist.
  • Run the relevant host-app migration or package install flow in a disposable database.
  • Open the listed admin or frontend surface and compare it with the screenshot plan.

Package Manifest

  • Composer name: capell-app/campaign-studio
  • Product group: Capell Growth
  • Kind: package
  • Tier: premium
  • Bundle: growth
  • Contexts: admin, frontend
  • Requires: capell-app/admin, capell-app/core, capell-app/form-builder, capell-app/frontend, capell-app/insights, capell-app/layout-builder
  • Optional dependencies: capell-app/experiments, capell-app/seo-suite

Admin Surfaces

  • CampaignConversionGoalResource (packages/campaign-studio/src/Filament/Resources/CampaignConversionGoals/CampaignConversionGoalResource.php)
  • CreateCampaignConversionGoal (packages/campaign-studio/src/Filament/Resources/CampaignConversionGoals/Pages/CreateCampaignConversionGoal.php)
  • EditCampaignConversionGoal (packages/campaign-studio/src/Filament/Resources/CampaignConversionGoals/Pages/EditCampaignConversionGoal.php)
  • ListCampaignConversionGoals (packages/campaign-studio/src/Filament/Resources/CampaignConversionGoals/Pages/ListCampaignConversionGoals.php)
  • CampaignCtaWidgetResource (packages/campaign-studio/src/Filament/Resources/CampaignCtaWidgets/CampaignCtaWidgetResource.php)
  • CreateCampaignCtaWidget (packages/campaign-studio/src/Filament/Resources/CampaignCtaWidgets/Pages/CreateCampaignCtaWidget.php)
  • EditCampaignCtaWidget (packages/campaign-studio/src/Filament/Resources/CampaignCtaWidgets/Pages/EditCampaignCtaWidget.php)
  • ListCampaignCtaWidgets (packages/campaign-studio/src/Filament/Resources/CampaignCtaWidgets/Pages/ListCampaignCtaWidgets.php)
  • CampaignGroupResource (packages/campaign-studio/src/Filament/Resources/CampaignGroups/CampaignGroupResource.php)
  • CreateCampaignGroup (packages/campaign-studio/src/Filament/Resources/CampaignGroups/Pages/CreateCampaignGroup.php)
  • EditCampaignGroup (packages/campaign-studio/src/Filament/Resources/CampaignGroups/Pages/EditCampaignGroup.php)
  • ListCampaignGroups (packages/campaign-studio/src/Filament/Resources/CampaignGroups/Pages/ListCampaignGroups.php)
  • CampaignLandingPageResource (packages/campaign-studio/src/Filament/Resources/CampaignLandingPages/CampaignLandingPageResource.php)
  • CreateCampaignLandingPage (packages/campaign-studio/src/Filament/Resources/CampaignLandingPages/Pages/CreateCampaignLandingPage.php)
  • EditCampaignLandingPage (packages/campaign-studio/src/Filament/Resources/CampaignLandingPages/Pages/EditCampaignLandingPage.php)
  • ListCampaignLandingPages (packages/campaign-studio/src/Filament/Resources/CampaignLandingPages/Pages/ListCampaignLandingPages.php)

Commands

  • capell:campaign-studio-install-layouts {--force : Update existing campaign layouts} (packages/campaign-studio/src/Console/Commands/InstallCampaignLayoutsCommand.php)

Routes And Config

  • Config: packages/campaign-studio/config/capell-campaign-studio.php
  • Route: POST /capell/campaigns/conversions

Permissions And Gates

  • Gate: CampaignOverviewStatsWidget: admin, super_admin
  • Gate: TopCampaignStudioWidget: admin, super_admin
  • Gate: TopLandingPagesWidget: admin, super_admin

Migrations

  • Migration: 2026_04_20_000001_create_campaign_groups_table.php
  • Migration: 2026_04_20_000002_create_campaign_conversion_goals_table.php
  • Migration: 2026_04_20_000003_create_campaign_landing_pages_table.php
  • Migration: 2026_04_20_000004_create_campaign_cta_widgets_table.php
  • Migration: 2026_04_20_000005_create_campaign_conversions_table.php

ERD Excerpt

erDiagram
    SITES ||--o{ CAMPAIGN_GROUPS : owns
    CAMPAIGN_GROUPS ||--o{ CAMPAIGN_LANDING_PAGES : groups
    CAMPAIGN_GROUPS ||--o{ CAMPAIGN_CONVERSION_GOALS : measures
    CAMPAIGN_GROUPS ||--o{ CAMPAIGN_CTA_BLOCKS : contains
    CAMPAIGN_CONVERSION_GOALS ||--o{ CAMPAIGN_CONVERSIONS : records
    CAMPAIGN_LANDING_PAGES ||--o{ CAMPAIGN_CONVERSIONS : attributes
    CAMPAIGN_GROUPS ||--o{ CAMPAIGN_CONVERSIONS : groups
    PAGES ||..o{ CAMPAIGN_LANDING_PAGES : landing_page_target
    ANALYTICS_VISITS ||..o{ CAMPAIGN_CONVERSIONS : attributed_visit
    ANALYTICS_EVENTS ||..o{ CAMPAIGN_CONVERSIONS : attributed_event

    CAMPAIGN_GROUPS {
        bigint id PK
        bigint site_id FK
        string name
        string slug
    }

    CAMPAIGN_LANDING_PAGES {
        bigint id PK
        bigint campaign_group_id FK
        bigint page_id FK
        bigint primary_goal_id FK
        string headline
    }

    CAMPAIGN_CONVERSIONS {
        bigint id PK
        bigint campaign_group_id FK
        bigint campaign_conversion_goal_id FK
        bigint campaign_landing_page_id FK
        bigint insights_visit_id FK
        bigint insights_event_id FK
        json attribution
        timestamp converted_at
    }

Screenshot Automation

Deployment should read screenshots.json, install the package with demo data, resolve each admin surface or frontend URL, and write images to packages/campaign-studio/docs/screenshots.

  • Campaign groups index.
  • Campaign landing pages index.
  • Campaign conversion goals form.
  • CTA widget form.
  • Campaign dashboard widgets.
  • Frontend landing page with campaign widgets.
History

Downloads and releases

Total downloads
0
Last downloaded
No downloads yet

Version history

1 release
  1. v1.0.0
    May 3, 2026
Write a review

Write your comment here. If you are not logged in, you will be asked to log in or create an account before it can be submitted.

Login or create an account is required before the review is saved.

No approved reviews yet. Reviews from eligible customers appear here after marketplace review.

Payment and licences

How marketplace purchases work

Capell keeps payment, account ownership, package receipts, and install access separate so a failed step can be recovered without guessing where the licence lives.

Who takes the payment?

Paid marketplace checkouts are sent to Stripe. Capell does not collect card details inside your CMS; Stripe confirms the payment and Capell activates the matching marketplace licence for the Capell account that approved the install.

How is the licence attached?

The licence is created against the signed-in Capell account first. When the hosted install flow returns to your CMS, Capell binds that licence to the requesting site and sends back the install authorization needed to continue.

Where does Anystack fit?

Anystack can be the package commerce and distribution surface for marketplace products. Capell still records the account licence and installed receipt, then relays later Anystack product or licence events only to connected sites that already have the package installed.

What happens if checkout is cancelled or expires?

No licence is created until Stripe confirms payment. If checkout is cancelled, start it again from the same review screen. If the quote expires, return to the marketplace in your CMS and start a fresh install flow so pricing and package metadata are recalculated.

What should I do if something looks wrong?

Keep the support reference shown on the review screen or receipt, then contact support before retrying with a different account. For missing licences, failed returns, or Anystack receipt mismatches, Capell can reconcile the Stripe session, Capell account, package receipt, and connected site from that reference.