Overview
This page builds the container every integration needs before any business event, webhook, or view attaches.When You Would Build One
Every build path starts here; Integration Categories describes what each adds.How to Build
Create the Integration Campaign
Create anINTEGRATION campaign with the integration program type. Its tag names the integration component this campaign carries, as library bundles do; the component tags added next are what list it on the Integrations page.
PROGRAM label equal to the campaign identifier; replace it when the contract defines one:
PROGRAM label per campaign; creating one replaces the previous.
Create the Component Model
Create a root component following the Custom Integration Template conventions. Leaveinternal:type:integration off it; the Integrations page excludes roots.
ROOT_COMPONENT_ID, refresh the campaign version, and create the model component with all eight display settings in one request:
variables; CampaignComponentCreateRequest has no settings property. Replace PARTNER_PRODUCT_SITE, PARTNER_MARKETPLACE_LISTING, and ASSET_HOST_LOGO_URL with absolute URLs. integration-v10.0 is the long-standing revision, later ones such as integration-v10.1 exist, so keep an installed source’s own type.
Set Integration Display Metadata
The type checks only that all eight are present, not that their values are usable. Tag every oneinternal:ui-display, exactly that string — the tag marks tile metadata and hides the setting from the settings list.
short.description— one tile sentence.about— what the integration receives and sends.documentation.url— the partner-facing page for this integration, not this guide.external.url— the partner’s product site.external.integration.url— the partner’s marketplace or extension listing, or an empty string.categories— oneSTRINGcategory other integrations already use, such aseCommerce Platform; the admin groups by exact value, so copy it from a working integration.logo— theIMAGEthe Integrations page renders, covered below.imageKey— the key the platform resolves to its own stored partner image, read by the older partner detail view rather than the tile; take it from the partner page.
Set a Logo That Resolves
The Integrations page renders the built value oflogo:
originAssetId path:
- A registered component for this partner exists — copy its built
logoURL from/v1/components/built, never/v1/components, whose source listing returns an unresolved expression naming an asset your component does not own. - No registered component has it — take an absolute URL from the partner’s site: the
og:imagemeta tag, the header logo<img>, or a brand-assets download link. Prefer PNG or SVG over a sprite or background image. - You have the file — upload it as an asset, then set
logotospel@buildtime:context.getAsset('example').getUrl(). - The partner has neither — track
logoas outstanding until the real file arrives.
asset part and the bytes in a file part:
reward-supplier-logo, exposed as rewardSupplierLogo, on every supplier template.
logo is IMAGE and required, so "default": "" is rejected:
Add the Partner Settings
Add partner configuration settings separately, each with a display name, description, type, default,importance:basic, and a priority, prefixed with the integration component name — exampleAccountUrl, exampleSetupInstructions.
Setup instructions carry the event endpoint, the current program label, the event names, the payload fields, the credential rule, and the documentation link, which Send Platform Events to Extole tells implementers to read from this view. Compute them at build time, substituting the campaign’s program label for PROGRAM_LABEL:
The value is interpolated at creation, so replacing the campaign’s
PROGRAM label means updating this setting too.Add Typed Sockets
Add abusinessEvents multi-socket:
views multi-socket:
view-v10.0 is the parent of every view type, so one filter accepts the configuration view below plus the report-runner-view-v10.0 and event-stream-view-v10.0 children from Add the Activity and Event Views.
Add a Configuration View
Create aconfig-view-v10.0 child attached to the integration model component:
component_ids takes the parent model component, which owns the views socket, and settingsToDisplay names parent settings only, including exampleSetupInstructions. Set status from a buildtime expression so the tab reports READY only once the settings Extole can verify are complete.
How to Test
Read the built component withGET /v1/components/built?having_all_tags=internal:type:integration and confirm logo resolved to an absolute URL on Extole’s asset host, every settingsToDisplay name appears with its display name, and the component sits under the root with internal:self-managed and both sockets filled.
