Scheduled Campaigns

Explore all past, present and future campaigns and all their different properties

Scheduled Campaigns

Explore all past, present, and future campaigns and all their different properties.

This shared table contains the details of all scheduled campaigns set in Optimove, alongside metadata that can be used for further analysis by any campaign property — grouping by Tags, Marketing Actions, and Channels for insightful analysis.

Each row represents a channel within an action of a campaign occurrence. Actions are set in Optimove Campaign Builder, under the Execute section. Campaign Actions split into more than one channel appear in different rows. Channels that test more than one template are represented by the first template only, in order of appearance in Campaign Builder.

📘

Same across all versions: the schema of this view is identical in V1.3, V1.5, and V1.6 — only the view-name suffix changes. All columns are preserved; to migrate, just change the suffix in your query. (PROMOTION_NAME / PROMOTION_CODE were added back in V1_3.)

Query

-- FOR V1.6
SELECT *
FROM [SHARED_DB].[BI].[VW_SCHEDULED_CAMPAIGNS_V1_6]

Glossary

  • ACTION_NAME — 'DN' represents control groups that are not targeted with any communication ("Do Nothing").
  • CAMPAIGN_TYPE_NAME
    • Test/Control — a simple campaign using a single action tested against a control group.
    • Self-Optimizing — a campaign configured to optimize its action distribution according to performance. Read more.
    • A/B/N — a campaign with multiple actions, may or may not include a control group.
    • A/B — a campaign testing only two actions, without a control group.
    • No Control — a campaign with a single test group only.
  • MARKETING_ACTION_NAME — the action name used in a campaign. Set on a campaign action level, managed in Optimove under Plan > Actions.
    Read more about terminology in the Data Share Glossary.

Primary Keys

  • Composite Key: PLAN_ID, PLAN_DETAIL_ID, TEMPLATE_ID, PLAN_DETAIL_CHANNEL_ID, PROMOTION_ID
👍

LAST_MODIFY_DATE — timestamp of the last recorded modification to this campaign record. Not recommended as an incremental ingestion watermark — see Ingestion Recommendations below.

Ingestion Recommendations

⚠️

Full load recommended. This is a small-volume reference table, typically fewer than 10,000 records. A full load (truncate-and-replace) is the recommended ingestion strategy.

Although LAST_MODIFY_DATE appears to be a natural watermark column, using it for incremental ingestion can produce data gaps:

ScenarioWhat happensImpact on incremental ingestion
Campaign deleted from OptimoveRow disappears from the view entirelyIncremental logic has no signal to delete the row from the destination — stale record persists silently
Campaign created or backfilled with a backdated LAST_MODIFY_DATENew row inserted with a timestamp older than the current watermarkRow is never picked up — permanent data gap
Metadata field updated without LAST_MODIFY_DATE changingFields like TEMPLATE_ID, TEMPLATE_NAME, PROMOTION_NAME, TAG_NAMES reflect new values but LAST_MODIFY_DATE is unchangedDestination retains outdated metadata — joins to engagement or results produce mismatched names

Recommended approach (swap the suffix for the version you use):

-- Full load pattern (run daily or on schedule)
CREATE OR REPLACE TABLE MY_DB.MY_SCHEMA.SCHEDULED_CAMPAIGNS AS
SELECT *
FROM DATA_SHARE_DB.DATA_SHARE_SCHEMA.VW_SCHEDULED_CAMPAIGNS_V1_6;

Because the view is small, full loads complete in seconds and eliminate all three failure modes above.

If incremental ingestion is required (e.g., pipeline framework constraints), supplement it with a periodic full reconciliation:

-- Reconciliation: detect stale/deleted records
SELECT dest.PLAN_ID, dest.PLAN_DETAIL_ID
FROM MY_DB.MY_SCHEMA.SCHEDULED_CAMPAIGNS dest
LEFT JOIN DATA_SHARE_DB.DATA_SHARE_SCHEMA.VW_SCHEDULED_CAMPAIGNS_V1_6 src
    ON dest.PLAN_ID = src.PLAN_ID
    AND dest.PLAN_DETAIL_ID = src.PLAN_DETAIL_ID
WHERE src.PLAN_ID IS NULL;
-- Any rows returned exist in your destination but have been
-- removed from the source view and should be deleted.

This also applies to detecting metadata drift — compare TEMPLATE_ID, TEMPLATE_NAME, and other mutable fields against the source periodically.

Table Description

Field NameDescriptionData TypeFormat
PLAN_IDA campaign's IDNUMBER(38,0)
MARKETING_ACTION_NAMEName of the marketing actionTEXT(2048)
TARGET_GROUP_IDUnique identifier for the target groupNUMBER(38,0)
TARGET_GROUP_NAMEName of the target groupTEXT(2000)
CAMPAIGN_TYPEType of the campaignNUMBER(38,0)
CAMPAIGN_TYPE_NAMEName of the campaign typeTEXT(16777216)
LEAD_TIMELead time for the campaignNUMBER(38,0)
SELECTED_GAIN_KPISelected gain key performance indicatorTEXT(512)
IS_IMPACT_ENABLEDFlag to indicate if impact is enabledNUMBER(38,0)True/False
EXECUTION_START_DATEStart date of the campaign executionDATEYYYY-MM-DD
EXECUTION_END_DATEEnd date of the campaign executionDATEYYYY-MM-DD
TAG_NAMESTags associated with the campaignTEXT(16777216)"Tag1","Tag2","Tag3"
IS_REAL_SCHEDULED_CAMPAIGNFlag to indicate if it's a real scheduled campaignNUMBER(38,0)
EXCLUDE_BY_CHANNEL_FLAGFlag to exclude by channelNUMBER(38,0)
IMPACT_LENGTH_PLANNED_ACTIONS_CONFIGURATIONConfiguration for planned actions impact lengthNUMBER(38,0)
PLAN_DETAIL_IDUnique identifier for plan detailNUMBER(38,0)
CAMPAIGN_ACTION_IDUnique identifier for the campaign action or control group identifierNUMBER(38,0)
CAMPAIGN_ACTION_NAMEName of the campaign action OR control groupTEXT(16777216)
IS_CAMPAIGN_ACTION_GROUPFlag to indicate if it's a campaign action groupNUMBER(38,0)1 or 0
CAMPAIGN_ACTION_TYPEType of campaign actionNUMBER(38,0)
ISOLATION_VOLUMEIsolation volumeNUMBER(38,0)
PLAN_DETAIL_CHANNEL_IDID of a channel sub-action within a Campaign ActionNUMBER(38,0)
CHANNEL_IDChannel ID associated with the channel sub-actionNUMBER(38,0)
TEMPLATE_IDUnique identifier for the template associated with this sub-actionNUMBER(38,0)
TEMPLATE_NAMEName of the template associated with this sub-actionTEXT(16777216)
CHANNEL_NAMEName of the channel associated with this sub-actionTEXT(16777216)
PROMOTION_IDPromotion ID (Optimove generated)NUMBER(38,0)
PROMOTION_NAMEPromotion name (as received by Optimove)TEXT(500)
PROMOTION_CODEPromotion code (as received by Optimove)TEXT(500)
CONDITIONAL_EXECUTION_NAMEName of the conditional executionTEXT(16777216)
DISPLAY_ORDERDisplay order of the action as shown in Campaign BuilderNUMBER(38,0)
UI_PANEL_IDUI panel IDNUMBER(38,0)
RECURRENCE_PATERNRecurrence pattern (note: column spelling is RECURRENCE_PATERN)TEXT(510)
NEXT_RUNTIMENext runtimeTIMESTAMP_NTZYYYY-MM-DD HH:MM
REPEAT_TIMESNumber of times to repeatNUMBER(38,0)
NOTESNotes associated with the campaignTEXT(16777216)
LAST_MODIFY_USERNAMEUsername of the last modifierTEXT(200)
LAST_MODIFY_DATEDate of the last modificationTIMESTAMP_NTZYYYY-MM-DD HH:MM
📘

Send timing: EXECUTION_DATE is the day a campaign executed — a date only, with no time-of-day component. A send-level timestamp is not currently exposed in Data Share; the date is the finest send-timing granularity available.



Did this page help you?