Use Settings to configure delivery, Routing to select events, Logs to inspect delivery history, and Help for this guide. Routing requires Tier 1; Tier 2 adds request rules. Log visibility, payload previews, and deletion can be delegated separately with Tier 2 role permissions.
Send signals to Mixpanel for product analytics and event import.
Mixpanel is a premium SignalPress service. The active license must include service_mixpanel or *. SignalPress uses Mixpanel's server-side /import API with strict validation and service-account authentication.
Hub service ID: mixpanel. Index: Integrations Overview. Target from PHP: Service Targeting.
Create the service account
- Open the destination project in Mixpanel.
- Open Project Settings and copy the numeric Project ID. This is different from the project token.
- Open your organization's service-account management area and create a service account with access to that project. Mixpanel requires an Owner or Admin service account for
/import. - Copy the generated username and secret immediately. Mixpanel does not show the secret again.
- In SignalPress, enter the Project ID, service-account username, and secret.
- Select the project's data residency region: United States, European Union, or India.
- Enable Mixpanel and save.
Store the secret only in SignalPress. Do not put it in PHP examples, JavaScript, event properties, source control, or support screenshots.
- [Mixpanel Import Events API](https://docs.mixpanel.com/reference/import-events)
- [Mixpanel API authentication](https://docs.mixpanel.com/reference/authentication)
Identity behavior
Every Mixpanel event requires a distinct_id. SignalPress chooses it in this order:
- An explicit
distinct_idoption passed tosp_capture(). - An explicit provider
user_idoption. - The current WordPress user as
wp-user-{ID}. - The integration's optional Default Distinct ID.
- A stable, privacy-preserving identifier derived from the site URL for system events.
SignalPress also supplies $insert_id from the event ID so Mixpanel can deduplicate retries. If no event ID exists, SignalPress derives a deterministic identifier from the event.
Test in Live View
- Save the Mixpanel settings and enable the service.
- Open Mixpanel's Live View for the same project.
- Click Send test signal in SignalPress.
- Confirm the
signalpress_testevent appears. The connection result is authoritative: strict import validation checks the credentials, project, region, and payload.
Send a signal to Mixpanel
PHP
sp_capture( 'checkout_completed', [ 'order_id' => 123, 'total' => 49.95, ], [ 'source' => 'checkout', 'distinct_id' => 'customer-42', 'services' => [ 'mixpanel' ], ] );
SignalPress adds project, environment, source, WordPress user ID, version, event time, identity, and deduplication metadata to the Mixpanel properties. The signalpress/mixpanel/payload filter can modify the final import batch with Tier 1 or higher.
Browser analytics
- Copy the public Project Token from Mixpanel project settings (separate from the numeric Project ID used for server import).
- On the Mixpanel Settings tab, enter the Project Token and save.
When the token is saved and the service is enabled, the browser SDK loads automatically. Send browser analytics events with:
JavaScript
SignalPress.analytics(
'cta_clicked',
{ location: 'pricing' },
{ source: 'marketing-theme' }
);
Server-side import continues to use the service account credentials. Use JavaScript capture when JavaScript should route through WordPress instead.
Limits and privacy
Mixpanel limits each event to fewer than 255 properties, nested objects to three levels, collections to fewer than 255 items, strings to 255 characters, and the uncompressed event to 1 MB. SignalPress bounds the payload before sending it, but developers should still capture only useful analytical properties and avoid secrets or unnecessary personal data.
Troubleshooting
- HTTP
401means the service-account username or secret is incorrect or lacks access to the project. - HTTP
400includes strict validation details. Check the service delivery log for the returned message. - No event in Live View usually means the wrong project ID or region was selected.
- The service account needs access to the exact project identified in SignalPress.
- Mixpanel recommends retrying
429,502, and503responses with backoff. Tier 2 queueing can move delivery out of the page request and smooth bursts.
What to read next
- Integrations Overview — browse and activate services
- Your First Connection Test — send a test signal and read the log
- Advanced Event Routing — per-service event filters
- Connection Tests and Delivery Log — interpret delivery results
- Service Targeting — limit destinations from PHP or JavaScript
- Client-side analytics — Mixpanel browser SDK