# Hober > Hober is a multi-channel messaging platform for SMBs and agencies: web/mobile push, email and in-app messages, with journeys (automation), campaigns, segments, A/B experiments, revenue attribution, and an MCP server for AI agents. REST API at https://api.hober.io/v1 (Bearer auth); SDKs for browser, iOS, Android, React Native and server languages. Full inlined documentation: https://docs-staging.hober.io/llms-full.txt ## Getting started - [Introduction](https://docs-staging.hober.io/docs/getting-started/introduction): Welcome to the Hober documentation. - [Core Concepts](https://docs-staging.hober.io/docs/getting-started/concepts): A **subscriber** is a person in your product, identified by an `externalId` you control (usually your user ID). Everything else — devices, consent, events, segm ## Guides - [Notification Templates](https://docs-staging.hober.io/docs/guides/notification-templates): Notification templates let you define reusable message content — a title and body — that you can apply consistently across campaigns and API calls. Instead of h - [Recurring Notifications](https://docs-staging.hober.io/docs/guides/recurring-notifications): Recurring schedules are available on the **Growth** plan and above. You will receive a `403 PLAN_FEATURE_UNAVAILABLE` error if you attempt to use schedules on t - [A/B Variant Sending](https://docs-staging.hober.io/docs/guides/ab-testing): A/B variant sending is available on the **Growth** plan and above (the `ab_testing` feature). You will receive a `403 PLAN_FEATURE_UNAVAILABLE` error if you att - [AI Copy Assist](https://docs-staging.hober.io/docs/guides/ai-assist): AI assist generates subject-line and message-body candidates in the Composer, grounded in your brand's own context. It proposes — **you** pick, edit, and send. - [Message Personalization](https://docs-staging.hober.io/docs/guides/message-personalization): Personalization lets each recipient receive their own version of a message. Write [Liquid](https://shopify.github.io/liquid/) variables into any text field — ti - [Server-Side Event Tracking](https://docs-staging.hober.io/docs/guides/server-side-event-tracking): Track events from your backend — order placed, subscription renewed, invoice - [In-App Experiences](https://docs-staging.hober.io/docs/guides/in-app-experiences): In-app messages reach users inside your product: a durable inbox delivers them even when the user was offline, and authored **banner** and **modal** formats ren - [Journeys](https://docs-staging.hober.io/docs/guides/journeys): A journey is an automated, multi-step messaging flow: a **trigger** that pulls a subscriber in, followed by a graph of **sends, delays, branches, and waits** th - [Campaigns](https://docs-staging.hober.io/docs/guides/campaigns): A campaign is a planned send as a first-class object: its audience, content, channels, and timing in one place, with a report attached. Every planned send in Ho - [Segments](https://docs-staging.hober.io/docs/guides/segments): A segment is a named, reusable cohort of subscribers defined by rules over their **attributes** (country, tier, any property your SDKs report) and their **behav - [GDPR Data Retention Policy](https://docs-staging.hober.io/docs/guides/gdpr-data-retention): This guide explains how the Push Notification System (Hober) stores, retains, and deletes personal data in compliance with GDPR. It covers retention periods per - [Holdout Groups & Lift](https://docs-staging.hober.io/docs/guides/holdout-groups): A **holdout group** is a slice of your target audience that is deliberately **not** sent a message. After the send, you compare conversion rates between the sub - [Quiet Hours, Frequency Caps & Consent](https://docs-staging.hober.io/docs/guides/delivery-controls): Reaching your audience is only half the job — reaching them *respectfully* is the other half. Hober enforces three delivery controls on your behalf: **consent** - [Revenue Attribution](https://docs-staging.hober.io/docs/guides/revenue-attribution): Revenue attribution ties dollars to the campaigns and journeys that earned - [Agent Access (MCP)](https://docs-staging.hober.io/docs/guides/agent-access-mcp): Connect your own AI agents to the platform over the [Model Context Protocol](https://modelcontextprotocol.io). A connected agent can analyse campaign results, b - [Audience Filters](https://docs-staging.hober.io/docs/guides/audience-filters): Audience filters narrow a notification's recipients by **device** and - [Cohort Analysis](https://docs-staging.hober.io/docs/guides/cohort-analysis): Cohorts group subscribers by a shared starting point — the period they were **acquired**, or the period they **first did something** — and track how each group - [Send-Time Insights](https://docs-staging.hober.io/docs/guides/send-time-optimization): When you send matters almost as much as what you send. Hober builds a **best-time-to-send heatmap** from your own audience's engagement history and surfaces it - [Smart Channel](https://docs-staging.hober.io/docs/guides/smart-channel): When a send targets several channels — push, email, SMS — every reachable subscriber normally gets it on **all** of them. Smart channel flips that: each subscri - [Digest Batching](https://docs-staging.hober.io/docs/guides/digest-batching): Automated journeys are great at reacting to everything — and that's exactly the problem. A busy subscriber can trip three journey steps in an afternoon and get - [Team & Roles](https://docs-staging.hober.io/docs/guides/team-and-roles): A Hober workspace is operated by a team: each member has a **persona role** matching how teams actually divide the work. Manage everything under **Settings → Te - [Webhooks](https://docs-staging.hober.io/docs/guides/webhooks): Webhooks push notification events to your own systems as they happen: Hober sends an HTTPS `POST` to your endpoint the moment a subscriber is created, a send is - [Email Channel Setup](https://docs-staging.hober.io/docs/guides/email-setup): The `email` channel type is available on the **Growth** plan and above. Creating an email channel on a plan that does not include it returns `403` with `"upgrad - [Fatigue Budgets](https://docs-staging.hober.io/docs/guides/fatigue-budgets): Every send decision in Hober optimizes *one message*. The fatigue budget is the backstop that watches the *sum*: a hard weekly ceiling on how many marketing mes - [Deliverability](https://docs-staging.hober.io/docs/guides/deliverability): Deliverability is whether your messages actually reach inboxes and devices — and it is earned, not configured once. Hober gives you the enforcement machinery (s - [iOS Channel Setup](https://docs-staging.hober.io/docs/guides/ios-setup): Connect your iOS app to Hober in three steps: get an APNs key from Apple, upload it in the dashboard, and integrate HoberKit. - [Test Mode (Simulated Sends)](https://docs-staging.hober.io/docs/guides/test-mode): The scariest moment in any messaging tool is the second after you click Send. Simulated sends remove it: the send runs through the **entire real delivery pipeli - [Android Channel Setup](https://docs-staging.hober.io/docs/guides/android-setup): Connect your Android app to Hober in three steps: export a Firebase service account, upload it in the dashboard, and integrate the Hober Android SDK. - [Sandbox Workspaces](https://docs-staging.hober.io/docs/guides/sandbox-workspaces): A sandbox is a full shadow copy of your workspace where **only the simulator can ever run**. Build campaigns, wire journeys, call the API, break things — nothin - [SMS & WhatsApp Setup](https://docs-staging.hober.io/docs/guides/sms-whatsapp-setup): Both channels are bring-your-own-provider: SMS sends through your - [Data Residency](https://docs-staging.hober.io/docs/guides/data-residency): Where Hober stores and processes your data — stated as it is today, not as a roadmap. ## API reference - [API Reference Overview](https://docs-staging.hober.io/docs/api-reference/overview): The Hober REST API base URL is `https://api.hober.io`. - [Subscribers](https://docs-staging.hober.io/docs/api-reference/subscribers): Creates or updates a subscriber record, keyed by `external_id`. Authenticated - [Devices](https://docs-staging.hober.io/docs/api-reference/devices): Registers a device push token. - [Notifications](https://docs-staging.hober.io/docs/api-reference/notifications): Sends a push notification to one or more subscribers. - [Templates](https://docs-staging.hober.io/docs/api-reference/templates): Notification templates let you define reusable title and body content that can be referenced when sending notifications. Templates are scoped to your tenant and - [Schedules](https://docs-staging.hober.io/docs/api-reference/schedules): Recurring schedules are available on the **Growth** plan and above (the `scheduled_sends` feature). Attempting to use these endpoints on the Free or Starter pla - [Events](https://docs-staging.hober.io/docs/api-reference/events): Behavioral event ingestion and identity stitching. Authenticates with either - [Campaigns](https://docs-staging.hober.io/docs/api-reference/campaigns): A campaign is a first-class send container: it holds an audience, one or more - [Journeys](https://docs-staging.hober.io/docs/api-reference/journeys): A journey is an automated, per-subscriber flow: a trigger starts a run for a - [Segments](https://docs-staging.hober.io/docs/api-reference/segments): Segments are live behavioral audiences: a rule over subscriber attributes and - [In-App Messages](https://docs-staging.hober.io/docs/api-reference/in-app): In-app messages render inside your app: as a banner, modal, card, or - [Channels](https://docs-staging.hober.io/docs/api-reference/channels): A channel is a configured delivery endpoint owned by your workspace — an iOS - [Analytics & Insights](https://docs-staging.hober.io/docs/api-reference/insights): Read endpoints over the delivery, engagement, and conversion data the platform - [Imports & Exports](https://docs-staging.hober.io/docs/api-reference/imports-exports): Bulk data movement in and out of your workspace: import subscribers into a - [Authentication & API Keys](https://docs-staging.hober.io/docs/api-reference/authentication): The Hober REST API base URL is `https://api.hober.io`. Every request is - [Errors & Rate Limits](https://docs-staging.hober.io/docs/api-reference/errors): All HTTP error responses use a single canonical JSON envelope: ## Browser SDK (web push) - [Browser SDK Quickstart](https://docs-staging.hober.io/docs/browser-sdk/quickstart): Add web push notifications to your web application in under 5 minutes. - [Configuration](https://docs-staging.hober.io/docs/browser-sdk/configuration): | Option | Type | Required | Description | - [API Reference](https://docs-staging.hober.io/docs/browser-sdk/api-reference): Auto-generated from TypeDoc annotations in `@hoberhq/browser-sdk`. All methods are available on the default `Hober` export. ## iOS SDK - [iOS SDK Quickstart](https://docs-staging.hober.io/docs/ios-sdk/quickstart): Native Swift SDK for iOS apps using APNs. - [Configuration](https://docs-staging.hober.io/docs/ios-sdk/configuration): | Option | Type | Required | Description | - [Native iOS (Swift) Integration Guide](https://docs-staging.hober.io/docs/ios-sdk/guide): This guide walks you through integrating `HoberKit` into a native iOS application — from Swift Package Manager installation through foreground and background no - [API Reference](https://docs-staging.hober.io/docs/ios-sdk/api-reference): Generated from DocC documentation in `HoberKit`. The `Hober` enum acts as a namespace; all methods are static. - [Rich Push Notifications (Images)](https://docs-staging.hober.io/docs/ios-sdk/rich-notifications): Attach an image to a push notification — product shots, artwork, event ## Android SDK - [Android SDK Quickstart](https://docs-staging.hober.io/docs/android-sdk/quickstart): Native Kotlin SDK for Android apps using FCM. - [Configuration](https://docs-staging.hober.io/docs/android-sdk/configuration): | Parameter | Type | Required | Description | - [Native Android (Kotlin) Integration Guide](https://docs-staging.hober.io/docs/android-sdk/guide): This guide walks you through integrating `hober-android-sdk` into a native Android (Kotlin) application — from Gradle setup through notification display customi - [API Reference](https://docs-staging.hober.io/docs/android-sdk/api-reference): Generated from Dokka/KDoc annotations in `hober-android-sdk`. The full Dokka HTML site is hosted at `https://docs.hober.io/android-sdk/dokka/` and regenerated o ## React Native SDK - [React Native SDK Quickstart](https://docs-staging.hober.io/docs/react-native-sdk/quickstart): Add push notifications to your React Native app on iOS and Android in minutes using `@hoberhq/react-native-sdk`. - [Configuration](https://docs-staging.hober.io/docs/react-native-sdk/configuration): Refer to platform-specific guides for FCM (Android) and APNs (iOS) setup. - [API Reference](https://docs-staging.hober.io/docs/react-native-sdk/api-reference): Auto-generated from TypeDoc annotations in `@hoberhq/react-native-sdk`. All methods are available on the default `Hober` export. ## Server SDKs - [Overview](https://docs-staging.hober.io/docs/server-sdks/overview): The server SDKs send **events** from your backend to Hober — the server-side counterpart of the client SDKs' `track()`. Events drive segments, journey triggers, - [Go](https://docs-staging.hober.io/docs/server-sdks/go): Backend event tracking for Go services: background batching, retries with backoff and jitter, automatic UUIDv7 idempotency keys. Standard library only; Go 1.22+ - [Node.js](https://docs-staging.hober.io/docs/server-sdks/node): Backend event tracking for Node.js: background batching, retries with backoff and jitter, automatic UUIDv7 idempotency keys. Zero runtime dependencies; Node ≥ 1 - [Python](https://docs-staging.hober.io/docs/server-sdks/python): Backend event tracking for Python: background batching, retries with backoff and jitter, automatic UUIDv7 idempotency keys. Standard library only; Python ≥ 3.9. - [Java](https://docs-staging.hober.io/docs/server-sdks/java): Backend event tracking for the JVM: background batching, retries with backoff and jitter, automatic UUIDv7 idempotency keys. Zero runtime dependencies (Java 11+ ## Integrations - [Integrations Overview](https://docs-staging.hober.io/docs/integrations/overview): Hober connects to the tools your team already uses, in both directions: - [Segment](https://docs-staging.hober.io/docs/integrations/segment): Route your existing Segment pipeline into Hober: `track` calls become behavioral events, `identify` calls create or update subscribers. No re-instrumentation — - [Shopify](https://docs-staging.hober.io/docs/integrations/shopify): Turn store activity into messaging: abandoned-cart journeys, order confirmations on the customer's preferred channel, win-back campaigns keyed on purchase histo - [Mixpanel](https://docs-staging.hober.io/docs/integrations/mixpanel): Forward Hober's event stream — message engagement (`notification.*`) and behavioral events — to your Mixpanel project, so campaign impact shows up in the dashbo - [Amplitude](https://docs-staging.hober.io/docs/integrations/amplitude): The same forwarded event stream as [Mixpanel](/docs/integrations/mixpanel), delivered to Amplitude's HTTP V2 API. - [Slack](https://docs-staging.hober.io/docs/integrations/slack): Operational notifications for your team (not your subscribers): when a campaign finishes — completed or failed — the summary lands in a Slack channel of your ch - [Zapier](https://docs-staging.hober.io/docs/integrations/zapier): Connect Hober to 7,000+ apps. The Zapier app authenticates with a **server key** (`hober_srv_…`, from Settings → API Keys → Server keys) and, for the Upsert Sub - [Hightouch (reverse-ETL)](https://docs-staging.hober.io/docs/integrations/hightouch): Sync audiences and traits from your warehouse into Hober with Hightouch's - [Census (reverse-ETL)](https://docs-staging.hober.io/docs/integrations/census): Sync audiences and traits from your warehouse into Hober with Census's ## SSO - [SAML SSO Overview](https://docs-staging.hober.io/docs/sso/overview): **Plan required**: Enterprise - [Okta Setup](https://docs-staging.hober.io/docs/sso/okta): **Prerequisites**: Enterprise plan on Hober | Okta admin access - [Azure AD Setup](https://docs-staging.hober.io/docs/sso/azure-ad): **Prerequisites**: Enterprise plan on Hober | Azure AD (Entra ID) Global Administrator or - [Troubleshooting](https://docs-staging.hober.io/docs/sso/troubleshooting): This page covers the most common SAML configuration errors, how to diagnose them, and ## Migration guides - [Migration Guide — React Native to Native iOS/Android SDKs](https://docs-staging.hober.io/docs/migration/react-native-to-native): This guide helps developers move from `@hoberhq/react-native-sdk` to the native `HoberKit` (iOS) or `hober-android-sdk` (Android) SDKs. - [Migrating from Klaviyo](https://docs-staging.hober.io/docs/migration/from-klaviyo): A practical, consent-safe path from Klaviyo to Hober: export, transform, - [Migrating from Braze](https://docs-staging.hober.io/docs/migration/from-braze): The Braze path mirrors the [Klaviyo guide](/docs/migration/from-klaviyo) —