Skip to content

Instantly share code, notes, and snippets.

@jghankins
Created April 5, 2026 17:56
Show Gist options
  • Select an option

  • Save jghankins/1459a272eb407958be00fd27a9169e9d to your computer and use it in GitHub Desktop.

Select an option

Save jghankins/1459a272eb407958be00fd27a9169e9d to your computer and use it in GitHub Desktop.
Kajabi vs Pewpros: Feature Comparison & Attack Strategy

Kajabi vs Pewpros: Feature Comparison & Attack Strategy

Research date: 2026-04-05 Issue: #205 Sources: developers.kajabi.com, kajabi.com/features, Pewpros codebase audit

1. Executive Summary

Pewpros is a single-tenant, firearms-industry-focused learning + membership + community platform with deep vertical integrations (USCCA, GHL, Stripe Terminal, Apple Wallet, iOS Live Activities). Kajabi is a horizontal, multi-tenant creator-economy platform optimized for course/membership/coaching creators.

The two platforms overlap in ~60% of their surface area (courses, memberships, community, commerce, CRM, email, automations, blog), but each has unique strengths:

Pewpros wins on: events & scheduling, appointments, mobile/native (APNs, Live Activities, Wallet), unified communications (SMS/voice/chat), approval gates in automations, USCCA/GHL integrations, in-person POS, family memberships, refund/reschedule policy engine.

Kajabi wins on: landing page & website builder, funnels/pipelines, public OAuth API with JSON:API + webhooks, forms builder, offers/pricing flexibility (payment plans, order bumps), podcasts, coaching product type, analytics polish, mobile creator/consumer apps, developer ecosystem.

The attack strategy (Section 6) prioritizes: (1) public developer API + webhooks (table stakes for integrations); (2) payment plans + order bumps (revenue uplift); (3) forms builder (lead capture gap); (4) page/funnel builder (long-tail).


2. Feature Matrix

Legend: ● = full parity, ◐ = partial, ○ = missing, ★ = Pewpros exceeds Kajabi

Area Capability Kajabi Pewpros Notes
Courses / LMS Course → module → lesson hierarchy Pewpros: course → section → lesson
Video lessons (embedded) No built-in hosting either side; both embed
Text / PDF lessons
Drip content (date + day-count)
Progress tracking Lesson + video position
Assessments / quizzes Schema stub only, no grading UI
Assignments (upload, grade) Not implemented
Certificates on completion ● ★ Pewpros has 6 certificate types + PDF gen
Prerequisites / skill trees
Sequential mode
Cohorts / group-based courses Groups exist but not cohort model
Multi-instructor courses Single instructor field
Free preview lessons
Course bundles Via membership levels
Memberships Recurring subscriptions
Tiered membership levels
Family plans ● ★ Primary + spouse + dependents with Stripe
Trial periods Only via Stripe config, no UI
Pause / resume
Proration on upgrade
Dunning management Basic retry, no upsell on decline
Auto-enrollment in linked courses Via membership_level_courses
External sync (USCCA) ● ★ USCCA bidirectional sync
Community Feed, posts, comments, likes
Categories / spaces
Polls
Leaderboards / gamification Points + point_events
Member profiles
Moderation (report, block, pin)
Direct messages Unified conversations
@ mentions & notifications
Hashtags
Threaded replies Flat comment structure
Private sub-groups / channels
Live events / streaming AWS IVS integration exists
Push notifications on activity ● ★ APNs + iOS Live Activities
Email Marketing Broadcast emails Admin compose
Drip sequences / campaigns Via automations, no dedicated UI
Segments (behavior-based) Tag-based only
Email templates library Transactional only
A/B testing
Open / click tracking
Deliverability monitoring
Forms → email list No form builder
SMS broadcasts ● ★ Twilio
Voice broadcasts ● ★ Twilio
Funnels / Pages Landing page builder (drag-drop) Hardcoded templates only
Sales funnel / pipeline (multi-step)
Opt-in forms / lead capture
Thank-you pages Hardcoded per flow
A/B test pages
Custom website pages
Themes / templates marketplace Tenant branding only
Popups / exit intent
Commerce One-time products Shop
Recurring subscriptions
Payment plans (installments) Split payments not supported
Order bumps (checkout upsell) Event addons only
Upsells (post-purchase)
Coupons / promo codes
Tax calculation Stripe only
Multi-currency Stripe supports but UI fixed
Physical products + shipping ● ★ Kajabi is digital-first
Affiliate program
In-person POS ● ★ Stripe Terminal
Apple Wallet passes ● ★ Events & memberships
Analytics Revenue dashboard
Student progress reports
Cohort analytics
Funnel conversion analytics
Video watch analytics
Email engagement
Custom report builder
CSV export
Automations Visual workflow builder
Trigger types ● ★ Pewpros: 15+ incl. community, webhooks
Action types ● ★ 20+ nodes incl. Stripe ops
Conditional branching
Delay / wait steps
Manual approval gates ● ★
Sub-workflows ● ★
Rate limiting / circuit breaker ● ★
Templates library
Events / Scheduling Calendar events ● ★ Kajabi has no events
Recurring event series ● ★ instances + occurrences
Ticket types & pricing tiers ● ★
Registration + payment ● ★
Waitlist ● ★
Check-in (QR) ● ★
Refund / reschedule policies ● ★ Full policy engine
Virtual / Zoom / IVS integration ● ★
1:1 appointment booking ● ★ Kajabi has coaching calls, not quite the same
Venue management ● ★
Blog / Content Blog posts + categories
SEO metadata
RSS feed
Scheduled publishing No publish_at
Comments
Podcasts Not implemented
Newsletters (separate product)
Mobile Creator mobile app Kajabi has one, we don't
Learner mobile app Swift app
Push notifications APNs
iOS Live Activities ● ★
Offline sync
Integrations Stripe Both deep
Google Calendar
Mailchimp / Klaviyo
Zapier / Make No native connector
GHL (Go High Level) ● ★
USCCA ● ★
Twilio ● ★
Zoom
WordPress / WooCommerce import
Auth / Users Email + password
Magic link
Social login (Google/FB/Apple) Only Google for calendar, not login
2FA
SSO (SAML)
Roles & permissions student/admin/owner/super_admin

3. Public API Comparison

3.1 API Design Philosophy

Dimension Kajabi Pewpros
Base URL https://api.kajabi.com/v1 https://{tenant}.pewpros.com/api/v1
Format JSON:API (sparse fields, includes, relationships) Plain REST JSON
Auth OAuth 2.0 client_credentials grant Bearer token (user) + X-Admin-Key (admin)
Developer docs Public Mintlify site, OpenAPI spec, Postman collection /docs (internal), OpenAPI at /api/docs/openapi.json
Self-serve API keys ● Via Kajabi Dashboard → Public API settings ○ No customer-facing key management
Scopes ● Granular (view:contacts, view:orders, etc.) ○ Coarse (admin vs user)
Sandbox env ◐ Not documented ○ None
Rate limits Not publicly documented ◐ Only on /auto-login (10/60s)
Webhooks (self-serve CRUD) ● Full via /v1/hooks ○ Hardcoded incoming endpoints
Idempotency keys Not documented
Request IDs Not documented

3.2 Resource Coverage

Kajabi Resource Kajabi Endpoints Pewpros Equivalent Gap
Blog Posts list, show /api/v1/blog, /api/v1/blog/:slug ● parity
Contacts list, show, create, update, delete /api/v1/contacts/* ● parity + we have notes
Contact Notes list, show, create, update, delete /api/v1/contacts/:id/notes/* ● parity
Contact Tags list, show /api/v1/tags/* ● parity
Contact → Tag add/remove/replace dedicated endpoints /api/v1/contacts/:id/tags ◐ no "replace" op
Contact → Offer grant/revoke/replace dedicated endpoints -- ○ no offer concept
Courses list, show /api/v1/courses/* ● parity + we have lessons/progress
Custom Fields list, show -- ○ No custom field system on contacts
Customers list, show + offer grants -- ○ No "Customer" abstraction separate from User
Forms list, show, submit, submissions -- No form builder
Landing Pages list, show -- No page builder
Offers list, show, products -- No offer abstraction
Orders list, show, items /admin/shop-orders (LiveView only) ◐ no public Orders API
Podcasts list, show -- ○ No podcasts
Products list, show /api/v1/admin/courses, /api/v1/admin/products ◐ not unified
Purchases list, show, cancel, deactivate, reactivate /api/v1/courses/:slug/enroll, /api/v1/membership ◐ scattered across enrollments/memberships/registrations
Sites / Website Pages list, show -- ○ No multi-site / page API
Transactions list, show /api/v1/admin/reporting (data only) ◐ no per-transaction resource endpoint
Payouts list, show -- ○ Stripe dashboard only
Webhooks (CRUD) create, list, show, delete -- No webhook management API
User Profile (/me) show /api/v1/auth/me, /api/v1/profile ● parity

3.3 Resources Pewpros has but Kajabi does NOT

These are the vertical strengths that form our moat:

  • Events (10 endpoints): listing, registration, checkout, reschedule, cancel, roster, mobile checkout
  • Appointments (booking, availability, reschedule)
  • Groups / Seats (13 endpoints: invitations, members, courses, events, progress, seats)
  • Community (20 endpoints: feed, posts, comments, polls, likes, pin, report, block, leaderboard, members, profile)
  • Conversations (SMS/voice/email/chat unified)
  • Live Activities (iOS) -- start, advance, end
  • Device tokens & push -- register, unregister, test push
  • Certifications -- issue, list, download PDF
  • Apple Wallet passes
  • Waivers -- liability form management
  • Notifications -- list, unread count, mark read
  • Approval gates -- list, approve, deny
  • Admin Reporting + CSV export
  • Terminal (Stripe POS) -- connection tokens, payment intents
  • QR codes -- event join, community invites

3.4 Webhooks

Dimension Kajabi Pewpros
Self-serve CRUD API ○ (hardcoded)
Event types 6 (purchase, payment_succeeded, order_created, form_submission, tag_added, tag_removed) 15+ internal automation triggers, but not exposed as outbound webhooks
Signature verification Not documented ● Stripe uses signature; our own webhooks don't sign
Retry policy Not documented ◐ Oban retries for outbound webhook automation actions
Wildcard / filtered hooks ● (omit resource_id = wildcard)
Dead-letter queue Not documented webhook_dedup for idempotency

This is our biggest API gap. Customers integrating Pewpros with external tools (Zapier, custom backends) need a self-serve way to create webhooks and receive signed deliveries.


4. Strategic Gap Analysis

4.1 Must-Have (P0) -- Competitive Table Stakes

These are features buyers will ask about in the sales cycle and expect on day one.

# Gap Why it matters Effort
P0-1 Public developer API keys (self-serve) Customers can't integrate with Zapier, custom apps, or agencies without admin intervention. Kajabi has this. M
P0-2 Outbound webhook CRUD API + signing The #1 integration blocker. Webhooks with HMAC signatures are table stakes. M
P0-3 Payment plans (split payments on courses) Kajabi, Teachable, Thinkific all have this. Direct revenue impact -- buyers choose platforms they can sell $2k+ courses on. M
P0-4 Order bumps & one-click upsells Checkout AOV uplift. Kajabi markets this heavily. S
P0-5 Forms builder (lead capture + submissions API) Today we have no way to capture leads outside of hardcoded signup forms. Needed for lead magnets, contact pages, waitlists. M
P0-6 Quizzes + graded assessments LMS parity. Schema stub exists; build the runtime. M
P0-7 Trial periods UI for memberships Already in Stripe, but no UI. Easy win. S

4.2 Should-Have (P1) -- Catch-up

Features that close the gap but aren't deal-breakers.

# Gap Why it matters Effort
P1-1 Landing page / section builder Removes agency dependency for one-off promo pages. Even a block-based builder would work. L
P1-2 Drip email sequence UI (on top of automations) Automations already do this, but a dedicated sequence UI is much easier to use. M
P1-3 Course prerequisites S
P1-4 Scheduled blog publishing (publish_at) Trivial, embarrassing we don't have it. XS
P1-5 2FA for admin accounts Security posture. TOTP via Erlang lib. S
P1-6 @ mentions in community + notifications Engagement. S
P1-7 Affiliate program Creator-economy standard. L
P1-8 Custom fields on contacts Currently only tags and lists. S
P1-9 Email open/click tracking Needs a tracking pixel + redirect handler. M
P1-10 Cohort analytics Track a group of students through a course together. M

4.3 Nice-to-Have (P2) -- Long Tail

Features we'd do after closing the P0/P1 gaps.

# Gap Notes
P2-1 Podcasts Low priority unless a customer asks
P2-2 Newsletters as a separate product Overlaps with email marketing
P2-3 Coaching product type Overlaps with appointments
P2-4 Threaded comments in community Nice but not blocking
P2-5 Private sub-groups in community
P2-6 Funnel builder (multi-step) After landing page builder
P2-7 A/B testing for emails & pages After builder exists
P2-8 SAML SSO Only if enterprise customer asks
P2-9 Social login (Apple/FB) Google Calendar already integrated
P2-10 Zapier official connector After public API + webhooks ship
P2-11 Sandbox environment for API
P2-12 Request IDs + idempotency keys API polish

5. Pewpros Moat (Do Not Lose)

These are the things that differentiate us and should be preserved/extended, not regressed:

  1. Firearms industry verticalization -- USCCA integration, waivers, range events, certification workflows. Kajabi can never match this without a vertical acquisition.
  2. Physical events + in-person POS -- Check-in, QR, Stripe Terminal, ticket types, addons, refund/reschedule policies.
  3. Unified communications -- SMS, voice, email, DM, community all in one inbox (/admin/chat).
  4. GHL deep integration -- Bidirectional contact sync, tag triggers, auto-login tokens.
  5. Automation power features -- Approval gates, sub-workflows, rate limiting.
  6. Native iOS -- Live Activities, APNs, Wallet passes.
  7. Family memberships -- Primary + spouse + dependents, all billed together.
  8. Appointment booking -- 1:1 scheduling with Google Calendar sync.

These are multi-year leads that Kajabi would have to rebuild from scratch.


6. Attack Plan -- Sprint Ordering

Each "sprint" is a logical slice (not a fixed duration). Ship in this order so every sprint delivers a sellable feature and unblocks the next.

Sprint 5 -- Public API Platform (P0-1, P0-2)

Goal: Pewpros becomes integration-friendly. Ship the minimum so a developer can build on top.

  • ApiKey schema (user_id, name, scopes, last_used_at, hashed_key)
  • Admin UI under /admin/api-keys to create/revoke keys
  • Scopes: read:contacts, write:contacts, read:courses, write:courses, read:events, write:events, read:orders, read:members, read:community, write:community
  • Webhook schema (url, events, signing_secret, active, last_delivery_at)
  • Admin UI /admin/webhooks to create/test/delete subscriptions
  • WebhookDeliveryWorker (Oban) with HMAC-SHA256 signing, 5-attempt exponential backoff, dead-letter on webhook_deliveries table
  • Event emitters in contexts for: contact.created, contact.updated, contact.tagged, order.created, payment.succeeded, enrollment.created, enrollment.completed, membership.activated, membership.cancelled, event.registered, community.post.created
  • Docs page at /docs updated with API key + webhook guide
  • Add request ID middleware (Plug.RequestIdX-Request-ID header)

Deliverable: A customer can paste an API key into Zapier/Make and receive real-time webhooks.

Sprint 6 -- Commerce Uplift (P0-3, P0-4, P0-7)

Goal: Increase checkout AOV and remove pricing objections.

  • Payment plans: add pricing_type: "plan" to courses + memberships, with num_installments and interval. Use Stripe's subscription_schedules under the hood.
  • Order bumps: add order_bumps config to course/event/membership checkouts -- a checkbox on Stripe Checkout or a pre-checkout step with the bump products.
  • Post-purchase upsells: upsell_offers table linking a trigger product to an upsell product; present on thank-you page.
  • Trial periods UI: add trial_days to membership levels, wire to Stripe.
  • Admin UI for all of the above in /admin/commerce (new section).

Deliverable: Customer can sell a $2k course in 4 payments + add an order bump. Direct revenue uplift.

Sprint 7 -- Lead Capture & LMS Parity (P0-5, P0-6)

Goal: Close the two biggest LMS/marketing gaps.

  • Forms builder:
    • Form, FormField, FormSubmission schemas
    • Admin builder LiveView at /admin/forms/:id/edit with field types: text, email, phone, select, checkbox, textarea, hidden, consent
    • Embed code + direct URL /forms/:slug
    • Submission API POST /api/v1/forms/:slug/submit
    • Automation trigger: form.submitted
    • Submissions list view
  • Quizzes / assessments:
    • Finish lesson.content_type = "quiz": add QuizQuestion, QuizChoice, QuizAttempt, QuizAnswer
    • Question types: multiple choice, true/false, short answer
    • Passing score on lesson
    • Block lesson progress until quiz passed (when require_sequential)
    • Student quiz-taking LiveView
    • Admin quiz builder

Deliverable: Customers can build lead-capture forms and real quizzes without leaving Pewpros.

Sprint 8 -- Page Builder Phase 1 (P1-1)

Goal: Let admins create custom pages without a developer. Don't try to beat Kajabi's builder -- match the 80% use cases.

  • Page schema (slug, title, status, blocks: jsonb array, seo_*)
  • Block types (start with 10): hero, text, image, video, cta, pricing_table, testimonial, feature_grid, event_list, course_list
  • Block renderers as function components in PewprosWeb.PageBlocks
  • Admin LiveView /admin/pages with block picker + inline preview (no drag-drop v1, just add/remove/reorder)
  • Public route /p/:slug serving rendered pages
  • Extend to course/event landing page overrides later

Deliverable: Customer can launch a promo page with hero + CTA + pricing table in 5 minutes.

Sprint 9 -- Marketing Polish (P1-2, P1-4, P1-6, P1-8, P1-9)

Goal: Marketer-friendly UX on top of existing infra.

  • Email sequence UI: dedicated /admin/sequences wrapping existing automation engine -- list of steps, drip delays, templates. Automations still power it under the hood.
  • Scheduled publishing: add publish_at to blog posts + pages, cron worker to flip status.
  • @ mentions: parse @username in community posts/comments, create Notification records, push via APNs.
  • Custom fields on contacts: ContactCustomField schema, admin UI to define fields, API to read/write.
  • Email open/click tracking: tracking pixel served at /e/open/:delivery_id, link rewriter → /e/click/:delivery_id/:hash, EmailDelivery schema.

Sprint 10 -- Analytics & Security (P1-5, P1-10, P0 revisit)

  • 2FA for admins: TOTP via :pot lib, enrollment flow, backup codes
  • Cohort analytics: group_progress already exists -- build dashboard views
  • Affiliate program (P1-7): Affiliate, AffiliateLink, Commission schemas; tracking cookie; payout via Stripe Connect

Sprint 11+ -- Long Tail (P2)

Prioritize based on actual customer asks. Likely order:

  1. Funnel builder (extend page builder with multi-step flows)
  2. A/B testing on pages and emails
  3. Zapier official app (public API is already shipped)
  4. SAML SSO (first enterprise customer ask)
  5. Podcasts
  6. Threaded community comments

7. Open Questions

  1. Vertical vs horizontal positioning -- Do we want to be a firearms-industry platform that happens to be Kajabi-like, or a general creator platform with a firearms vertical? Answer changes priorities (e.g., podcasts matter more if horizontal).
  2. Kajabi API parity vs our own API shape -- Should we adopt JSON:API to make Kajabi migration easier, or keep our plain-REST API? Recommendation: keep plain REST, add a Kajabi-compat adapter layer later if migration demand emerges.
  3. Offer abstraction -- Kajabi's Offer is a nice unified pricing wrapper across products. Should we introduce one? It would simplify checkout but require migrating existing course/event/membership pricing fields. Low priority unless we start selling product bundles.
  4. Kajabi Payments competitor -- Kajabi has their own payment processor. We rely entirely on Stripe. Not worth competing with -- Stripe is strictly better for the customer.
  5. Mobile creator app -- Kajabi ships an app for creators to manage their business on mobile. Our admin is responsive but not native. Probably P2 unless customers ask.

8. Appendix -- Data Points

8.1 Kajabi API Resource Counts (from llms.txt)

  • Authentication: 2 endpoints
  • Blog Posts: 2
  • Contacts: 13 (incl. tags, offers, notes relations)
  • Contact Notes: 5
  • Contact Tags: 2
  • Courses: 2
  • Custom Fields: 2
  • Customers: 6
  • Forms: 5
  • Landing Pages: 2
  • Offers: 3
  • Orders: 4
  • Podcasts: 2
  • Products: 2
  • Purchases: 5
  • Sites: 4
  • Transactions: 2
  • Payouts: 2
  • Webhooks: 10 (4 CRUD + 6 sample payloads)
  • User Profile: 1

Total: ~76 public endpoints

8.2 Pewpros API Resource Counts (from audit)

  • Auth: 8
  • Courses: 6 (+ admin CRUD ~10)
  • Lessons: 5
  • Events: 10 (+ admin CRUD ~12)
  • Memberships: 3
  • Groups: 13
  • Community: 20
  • Conversations: 8
  • Contacts: 8 (+ notes 4 + activities 1)
  • Tags / Lists: 8
  • Certifications: ~5
  • Notifications: 4
  • Promo codes: 2
  • Dashboard: 1
  • Live Activities: 8
  • Push / Devices: 6
  • Approvals: 3
  • Reporting (admin): 2
  • Profile: 2
  • Wallet passes: 1
  • Waivers: ~3
  • Blog: 2
  • Shop: 2
  • Appointments: 2

Total: ~140+ public endpoints

Pewpros already has nearly 2x the endpoint count of Kajabi's public API, but concentrated on different verticals (events, community, scheduling, mobile/push). The gap is not quantity -- it's developer experience (self-serve keys, webhooks, docs) and a few specific resources (forms, landing pages, offers).


Sources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment