Skip to main content
Organizations are the companies behind your contacts: the company, workspace or team that a user belongs to in your product. Contacts stay the unit you email; organizations add the layer that B2B products actually bill and support. Organizations were called accounts when they launched, and the API, CLI and MCP tools keep the account names (/api/v1/accounts, sequenzy accounts, upsert_account).
Sequenzy Organizations tab with callouts showing how to create organizations from detected work domains or add one yourself
With organizations you can:
  • keep plan, seats, MRR and trial dates on the organization and use them in every member’s segments, sequence conditions and emails
  • send an event about the organization (trial ending, payment failed, seat limit reached) to the right people in it
  • run a sequence once per company instead of once per seat
  • see who belongs to which organization, with roles, on one page
Organizations are your customers’ companies. They are separate from your Sequenzy account (sequenzy account, the get_account MCP tool and GET /api/v1/account) and from the account:read API key scope. Organization endpoints use subscribers:read and subscribers:write; organization events also need events:write, and deleting an organization needs subscribers:delete.
You manage organizations in the Organizations tab under Subscribers. Nothing about contacts, events or segments changes until your workspace turns Organizations on.

Turning Organizations on

Your workspace turns Organizations on when you create its first organization (in the dashboard, API, CLI or MCP) or run the backfill. It stays on after that, even if you delete every organization. Organization data is stored under account.* names. If your contacts already have a custom attribute named account or account.<name>, Sequenzy refuses to turn Organizations on (the API returns 409) and the Organizations tab lists the attributes to rename. Without this check, segments built on those attributes would stop updating. Contact attributes named organization.<name> (for example an organization object with a name inside) do not block turning Organizations on, but once it is on, organization.<name> in segments, sequence conditions and merge tags reads the organization instead. Rename those attributes first, for example to company.<name>, if your segments or emails use them.

Data model

Members are contacts with a role: owner, admin or member. A contact can belong to several organizations. Roles decide who gets organization events: events go to owners by default (admins when there is no owner), so an organization where everyone is a member receives nothing unless you send to all. Organizations created in bulk from domains or organization IDs start that way. The Organizations tab counts these organizations and lists them with Show them, each organization page shows who gets its alerts, and the API, sequenzy accounts list --without-event-recipients and the list_accounts MCP tool find them with withoutEventRecipients.

Getting started

1

Use what you already send

If your events carry an organization id (for example workspaceId, organizationId or teamId), or your contacts carry one as an attribute (for example account_id with a company_name next to it), open Subscribers, then Organizations. Sequenzy shows the property it found and previews the biggest organizations it would create, with their contacts. Organizations are named from a matching name property (such as workspaceName) or, when there is none, after the work email domain most of their contacts share, so an ID like zplgap... with contacts at leadpages.com becomes Leadpages. Creating them adds each contact to their organization in the background. Nothing is sent, and no sequences or sync rules run. The same flow is available from the API, sequenzy accounts detect-org-ids and the detect_account_organization_ids MCP tool.
2

Or accept suggestions from email domains

No organization id? When several contacts share a work email domain, such as seven people at acme.com, Subscribers, then Organizations suggests an organization for it. Uncheck any that are not customers and create the rest. Each becomes an organization named after the company (external ID and domain acme.com), and the domain’s contacts become members. Hover a contact count to see who is behind it. Nothing is sent and no sequences start.Personal and disposable providers (such as gmail.com or yopmail.com), your own sending domains, domains where a contact already belongs to an organization (for example through an organization ID sync) and domains an organization already uses are never suggested. The same suggestions are available from the API, sequenzy accounts suggestions and the list_account_suggestions MCP tool.
3

Or sync from your app

Upsert the organization, add members, and send organization events. The same calls exist in the CLI and MCP tools. Every /api/v1/accounts route is also available as /api/v1/organizations, and /api/v1/account-suggestions as /api/v1/organization-suggestions, with the same scopes and responses.
4

Attach contacts from their events

Once Organizations is on, any contact event can carry an account reference to an organization. The organization is created if it does not exist and the contact becomes a member. Before Organizations is on, the reference is ignored exactly as it was before this feature existed, and the response includes accountIgnored so you can tell.
Pass an object instead of a string to set the role or name at the same time: {"externalId": "org_123", "name": "Acme", "role": "owner"}.In the CLI, use sequenzy subscribers event jane@acme.com --name project_created --organization org_123 (or --account org_123), or --account-json '{"externalId":"org_123","role":"owner"}' for profile fields and a role. The MCP trigger_subscriber_event tool accepts the same string or object in account. These options also work with historical events; the timestamp determines whether sequences run.

Organizations in segments, sequences and emails

Organization fields reach every member as organization.<name>. Nothing changes on the contact’s own custom attributes; the organization values live alongside them. account.<name> is the older spelling and reads the same data.
  • Segments: the segment builder lists every organization field in its own Organization section, such as Organization plan is pro, Organization seats greater than 5 or Organization role is owner. Through the API, CLI and MCP, use an attribute filter with the field name, for example {"field": "attribute", "operator": "is", "value": "organization.plan:pro"}. “Contacts without an organization” is organization.externalId with is_empty.
  • Sequence conditions: the attribute picker in conditions and branches shows the same Organization section, and a field_* condition with fieldName organization.plan reads the contact’s primary organization.
  • Merge tags: {{organization.name}}, {{organization.domain}}, {{organization.externalId}}, {{organization.memberCount}}, {{organization.role}} and {{organization.<attribute>}} work in campaigns, sequences and previews, and the editor lists them in an Organization group. For a contact without an organization they are empty, so give them a default such as {{organization.name|your team}}.
Once Organizations is on, the organization. and account. names are reserved for organization data in segments, conditions and merge tags. A contact custom attribute named account (or account.<anything>) is still saved on the contact profile but is no longer synced for segments, so it cannot shadow or clear organization values. In workspaces without Organizations, {{organization.name}}, {{organization.full_address}}, {{organization.address}} and {{organization.url}} keep the meaning they have in templates imported from Klaviyo: your sending business, the same as {{company.name}}, {{COMPANY_ADDRESS}} and {{company.url}}. Contact attributes with those names still take priority. Once Organizations is on, these tags show the contact’s organization and are empty when it has no such value, so replace them with the company tags in imported emails.

Contacts in several organizations

Segments, merge tags and organization.<name> conditions use one primary organization per contact: the membership with the highest role (owner, then admin, then member), and the oldest membership when roles tie. The organization page and the contact’s profile show every membership. Organization events still reach the contact through each organization they belong to. In an email about one organization, such as a usage or billing alert, use {{event.organization.name}} rather than {{organization.name}}: for a contact in several organizations, {{organization.name}} names their primary organization, which may not be the one the alert is about. The email check flags this in sequences started by an event.

Billing from payment integrations

If Stripe, Paddle, Lemon Squeezy or another payment integration is connected, organizations show the company’s billing without any setup. After each payment event or revenue sync, Sequenzy files the paying contact under their organization and updates these attributes: The paying contact joins the organization they already belong to, otherwise the one organization using their work email domain, otherwise the organization whose ID matches an organization ID on the contact (for example Stripe customer metadata workspaceId). A contact counts as paying with a payment tag, MRR or lifetime revenue, so one-time buyers are included. They become Owner when the organization has none. Like other organization attributes, these reach every member as organization.plan, organization.billing_status and so on, so a segment on organization.billing_status includes teammates who never paid. When a workspace turns Organizations on, existing paying customers are filed and rolled up automatically.

Organization events

An organization event is about the organization, not one person. Sequenzy records it on the organization timeline and delivers it to the chosen recipients as a normal contact event, so sync rules and sequence triggers run per person. By default only owners receive it. Pass recipients: "all" when every member should get the email.
Each delivery carries event.organization.externalId, event.organization.name, event.organization.role and the organization attributes (also available as event.account.*), so a sequence triggered by trial_ending can say “{{event.organization.name}}’s trial ends in {{event.daysLeft}} days”. A property you send yourself named organization is kept as you sent it. Events recorded before October 25, 2026 only carry event.account.*. Pass occurredAt (ISO 8601) to preserve an event’s original timestamp, or omit it for the current time. This is also available as CLI --occurred-at and MCP trigger_account_event.occurredAt. Pass eventId when your integration may retry. The ID is scoped to the organization, so two organizations can use the same ID even when they share members. Retries keep the original recipients and event data, skip completed deliveries, and resume failed work without duplicating sequence enrollments.

Once per organization

In a sequence started by an event, open Settings and choose Once per organization under enrollment. Through the API, CLI and MCP, set the enrollment mode to matching_field with organization.externalId (or the older account.externalId). Only one run is active per organization across its members: combined with recipients: owners, one owner enrolls while that organization’s run is active. A new event can start another run after it finishes; other matching fields keep their per-contact behavior.

Limits and behavior

  • 100 attributes per organization; attribute keys up to 100 characters; string values up to 2,000 characters.
  • Attribute fan-out and recipient resolution cover up to 5,000 members per organization.
  • Deleting an organization keeps the contacts and clears their organization.* values. Deleting a contact removes their memberships. If attribute cleanup is temporarily unavailable, Sequenzy retries it automatically.
  • Organization events are kept until the workspace is deleted.

API, CLI and MCP

  • REST: List, Upsert, Get, Update, Delete, Members, Trigger event, List events. Suggestions: List, Accept. Organization IDs: Detect, Preview, Create, Job status. Each path also works with /organizations in place of /accounts and /organization-suggestions in place of /account-suggestions.
  • CLI: sequenzy accounts list|get|upsert|delete|members|add-member|remove-member|event|events|suggestions|accept-suggestions|detect-org-ids|preview-org-id|create-from-org-id, also available as sequenzy organizations. See the CLI reference.
  • MCP: list_accounts, get_account_by_external_id, upsert_account, delete_account, list_account_members, add_account_member, remove_account_member, trigger_account_event, list_account_events, list_account_suggestions, accept_account_suggestions, detect_account_organization_ids, preview_accounts_from_organization_id, create_accounts_from_organization_id, get_account_organization_id_job. See the MCP reference.