Optimove gives you several ways to create and update customer attributes, and the method you choose when you create an attribute shapes how you can update it later. Choosing the right approach up front saves you from having to reconfigure an attribute — or backfill historical values the hard way — down the line.
This article gives you a high-level overview of attribute governance in Optimove: the methods available to create attributes, how each creation method affects your update options, and the recommended approach for common scenarios. For the step-by-step instructions behind each method, follow the links to the detailed guides throughout.
Creating Attributes: Choosing the Right Method
There are three main ways to create a new customer attribute in Optimove. Each one supports a different set of update methods and a different level of support for backfilling values for your existing customers.
Option 1: Batch Data / ETL (via Change Request)
Create the attribute through your standard batch process or ETL pipeline, coordinated with your Customer Success Manager (CSM) using the Change Request process.
- How you can update it: Batch data, or API.
- Backfilling existing customers: Supported — full historical values can be loaded.
- Best for: Core attributes sourced from your data warehouse that need to stay in sync with your source of truth.
For the step-by-step process, see Adding Attributes: Data Exists in the Data Schema and Adding Attributes: Data Does Not Exist in the Data Schema.
Option 2: Data Ingestion
Create the attribute through Data Ingestion, which supports CSV upload, SFTP, Amazon S3, and Google Cloud, on demand or on a schedule.
- How you can update it: Data Ingestion, or API.
- Backfilling existing customers: Supported.
- Best for: Attributes you want to create and refresh yourself — including cases where you later want to switch to real-time API updates.
For details, see Data Ingestion.
Option 3: API
Create the attribute directly via an API call.
- How you can update it: API only.
- Backfilling existing customers: Not supported the same way — an API-created attribute holds values only from the point of creation forward, so populating historical values for your existing customer base is significantly more complex.
- Best for: Attributes that only need data from the moment of creation onward, with no requirement to backfill existing customers.
For details, see Creating Customer Attributes via API.
Comparison at a Glance
| Creation Method | How You Can Update It | Backfills Existing Customers? | Best For |
|---|---|---|---|
| Batch Data / ETL (Change Request) | Batch or API | Yes | Core, warehouse-sourced attributes |
| Data Ingestion | Data Ingestion or API | Yes | Self-managed attributes, including later API updates |
| API | API only | No (values from creation forward) | Forward-only attributes, no historical backfill |
Updating Attributes
Beyond the standard daily batch, Optimove provides several ways to update attribute values. Which options are available to you depends on how the attribute was created (see above).
Data Ingestion
Best for: Updating attributes in bulk multiple times a day.
- Updates attributes for existing customers only (does not create new customers).
- Not immediate — processed in batches throughout the day (scheduled every 6, 12, or 24 hours, or run manually via CSV).
- Ensure proper formatting to avoid ingestion errors.
- Campaigns using updated attributes require re-evaluating Target Groups to reflect the changes.
Example: You want to refresh customer email consent several times a day but don't need instant processing. Instead of waiting for the daily batch, schedule Data Ingestion every 6 hours. Learn more in Data Ingestion.
API Updates
Best for: Updating individual attributes in real-time.
- Specific customer attributes are updated instantly.
- Requires API integration with Optimove.
- Best suited for attributes that change frequently (e.g., user preferences, last login date).
Example: A customer changes their marketing preferences on your website and you want the update reflected immediately for segmentation. An API call updates the attribute in real-time. Learn more in Creating Customer Attributes via API.
Real-Time Attributes
Best for: Continuous updates for time-sensitive attributes.
- Event-driven updates using real-time data streams, processed as data arrives.
- Ideal for trigger-based campaigns.
- Ensures live data flow, but requires careful integration.
Example: A sports betting operator wants to trigger a campaign when a customer places a bet. Real-Time Attributes record the activity instantly, enabling an immediate response. Learn more in Setting Up Real-Time Customer Attributes.
Event-based Customer Attributes
Best for: Letting customer registration and profile updates update attributes automatically from events, without separate attribute-update API calls.
- Updates customer attribute values directly from incoming events that carry the latest value in the payload.
- Supports customer registration and detail updates via three events: ootb_registration, ootb_user_details_update, and ootb_customer_details_update.
- To update attributes beyond the out-of-the-box set, add them to the event parameters using the correct attribute field name.
- Requires a consistent event payload structure and governance to avoid overwriting good data with stale values.
Example: When a customer updates their profile, your app sends an ootb_customer_details_update event with ootb_email in the payload, and Optimove updates the email right away to keep campaigns current.
How Many Attributes Can You Create?
Each creation method has its own limit on how many customer attributes you can hold per tenant. Some methods have a cap of their own, and some share a common pool — the table below shows which is which, so you can plan your approach before you start building.
| Method | Limit per Tenant | Details |
|---|---|---|
| API Attributes | Up to 40 | Attributes you send to Optimove through the API. A fixed limit of 40 per tenant |
| Real-Time Attributes | Unlimited | |
| Calculated - Customer Attributes | No dedicated limit | All calculated attributes together share one pool of 100 per tenant |
| Calculated - Purchase / Game History | Up to 15 | This type has its own cap of 15. Those 15 are also counted inside the shared pool of 100 |
| Calculated - Activity History | No dedicated limit | Drawn from the same shared pool of 100 calculated attributes |
| Data Ingestion | Up to 36 mapped attributes | The limit of 36 applies to each ingestion process separately. There is no overall limit on how many attributes you create through data ingestion - you can add more processes as needed |
Recommended Approach by Scenario
- New attribute that must include existing customers, then update in real-time: Create the attribute via Data Ingestion (or batch) so you can backfill all existing customers, then update it via API going forward. Do not create it via API first — that would make backfilling every existing customer far more complex.
- Attribute sourced from your data warehouse: Create and maintain it via batch/ETL through a Change Request, and optionally layer API updates on top.
- Attribute that only matters from now on (e.g., a new preference captured at signup): Create it via API — no historical backfill is needed.