Campaign Studio
Campaign Studio gives Capell teams campaign groups, landing pages, CTA blocks, conversion goals, attribution, and reporting.
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.
Install on your Capell site in three steps.
Each extension ships as a standard Composer package. Purchases unlock account access immediately before you install.
-
01
Require the package
composer require capell-app/campaign-studio -
02
Register the extension
php artisan capell:extension:enable capell-app-campaign-studio -
03
Clear schema cache
php artisan capell:admin:clear-schemas-cache
Related extensions
Browse the packages that usually pair with Campaign Studio or buy the suite it belongs to.
Block Library
Reusable foundation content blocks with typed definitions, screenshots, and Filament Builder blocks for Capell...
Blog
Publish articles, archives, tag pages, and related-article widgets with multilingual, multi-site output and op...
Growth Campaign Suite
Launch measurable campaigns in Capell with landing pages, form capture, SEO readiness, site search, and redirect recovery in one buyer path.
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
- Capell Admin
- Capell Insights
- Capell Core
- Capell Form Builder
- Capell Frontend
- Core admin/frontend layout builder APIs
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
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.
BuildCampaignExperimentResultsActionreads synced campaign experiment results whencapell-app/experimentsis 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_daysso 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/conversionsfor same-origin page-view and CTA-click conversion capture.
Install And Setup
- Install with
composer require capell-app/campaign-studioin 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 usephp 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_daysfor 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
- docs index
- campaign-studio-api.md
- campaign-studio-database.md
- credits-and-acknowledgements.md
- overview.md
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
Dataclasses 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.
CampaignConvertedis dispatched when a conversion row is newly recorded, giving Automation Studio and other packages a stable conversion trigger without importing Campaign Studio internals.SyncCampaignExperimentActionbridges 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.BuildCampaignExperimentResultsActionreads 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_daysso 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/experimentsis installed. - Registers
POST /capell/campaigns/conversionsfor same-origin page-view and CTA-click conversion capture. - Registers
capell:campaign-studio-sync-statusesand schedules it every five minutes so campaign group statuses followstarts_atandends_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_daysfor 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/testswhen 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.
Downloads and releases
- Total downloads
- 0
- Last downloaded
- No downloads yet
Version history
1 release-
v1.0.0May 3, 2026
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.