Configure Content Fetch

Set up Content Fetch in Netcore CE: define your API, declare parameters, test the connection, map responses to labels, and activate for use in journeys.

Configuration is a one-time, governed activity. The flow has four steps, and a connection cannot go live until it passes a real test:

1
Define the API
Configure the API endpoint, method, authentication, and request details.
2
Declare Parameters
Define the path, query, header, or body parameters required for the API.
3
Test
Validate the API configuration and review the returned response.
4
Map the Response
Select response fields and expose them as variables for use later.
5
Activate
Save and activate the configuration to make it available in journeys.

Open the Content Fetch catalog

Content Fetch is the first card in the Integrations catalog. Follow the steps below to configure Content Fetch in your CE panel.

  1. Log in to the Netcore CE panel and navigate to Settings > Integration.
  2. On the Content Fetch card, and click Configure.

Integrate Content Fetch via API

Define API

Configure the API endpoint, method, authentication, and request details.

Refer to the below table to understand details to be filled.

FieldWhat to enter
Connection nameA unique, descriptive name, e.g. weather based data.
MethodGET or POST.
Endpoint URLThe full URL of your API. You can also paste a cURL command here and Netcore parses it into method, URL, headers, and parameters for you.
Enable cachingOptional. Turn on if the response is non-personalised per user.
Alert emailRequired. One or more addresses that get alerted when this connection's API calls start failing.

Below the endpoint, API request configuration has three tabs:

TabWhat it configures
ParametersKey-value pairs appended to the URL as query parameters.
AuthorizationHow Netcore authenticates to your API: No Auth, Basic Auth (username + password), or API key. Credentials are stored securely and never shown back in the UI.
HeadersHeader keys with static or dynamic (Liquid) values.

Configure Request Body

For the POST method, you also have to configure a request body.

Personalise the request per user

Anywhere a value should differ per user like a customer ID in the URL or a SKU in the query string or a token in a header, write a Liquid placeholder like below:

https://api.brand.com/v1/products/{{ sku }}

A Parameters tab for a weather lookup might look like this:

KeyValue
user_id{{ user_id }}
city{{ city }}

A Headers tab can mix static and dynamic values:

KeyValue
User-Id{{ user.id }}
User-Email{{ user.email }}
Sourcecrm-platform
🔒

Authorization is stored securely at the connection level, not on user profiles. Credentials never render in the UI, never appear in previews, and never show up in logs.

Declare Parameters

Define the path, query, header, or body parameters required for the API.

Every placeholder used anywhere in the request like URL, headers, parameters, or body, must be declared before the connection can be saved. For each one, you have to tell Netcore where the value comes from. Refer to the table below for reference.

PlaceholderSource
skuEvent attribute: payload.sku
customer_idUser attribute: customer_id
regionStatic value: "IN"

Netcore refuses to save if any placeholder is used but not declared. This catches typos and prevents connections that would silently fail at send time.

Test Connection

Validate the API configuration and review the returned response.

The Test action is the gate between a draft and a usable connection. You cannot activate until the test succeeds.

  1. Provide dummy values. Map each declared parameter to a static dummy value so the test is deterministic and doesn't depend on live user data:

    sku          →  "SKU-1234"
    customer_id  →  "cust_98765"
    region       →  "IN"
  2. Run the test. Netcore executes the request with the dummy values and shows you exactly what was sent and returned:

    • The final resolved URL (with dummy values substituted)
    • Request headers and body
    • Response status code
    • Response body
    • Round-trip latency
  3. Fix and re-test if needed. On any failure (auth error, timeout, 4xx/5xx), correct the config and run again. You want a clean 2xx before moving on.

Map Response

Select response fields and expose them as variables for use later.

Once the test returns successfully, map the response fields into stable internal labels. Labels are what marketers see and use in the editor.

Why labels

The raw response is your engineering schema:

{
  "data": {
    "price": 4499,
    "inventory": 12,
    "tier": "premium"
  }
}

A marketer shouldn't need to know price lives at data.price — they should just write {{ product_price }}. The label is that translation.

🔎

Needs verification

Claim under review: "Netcore parses and flattens nested JSON so deep fields are selectable." Confirm this covers array paths like recommendations[0].name from the original doc — if flattening doesn't support array indexing, the Recommendations use case above needs a caveat.

Add the mappings:

Response pathLabel
data.priceproduct_price
data.inventorystock_status
data.tierproduct_tier

Only mapped fields are usable. Anything you don't map is not accessible in campaigns.

👍

Labels are immutable once used

Once a campaign or journey uses a label, it cannot be renamed or repurposed — this protects live campaigns from silently breaking. To change the shape of the data, add a new label instead of editing an existing one.

Save and Activate

Save and activate the configuration to make it available in journeys.

A connection saves only when all of these hold:

  • Every placeholder is declared.
  • The test passed (or was explicitly overridden by an authorised user).
  • Response mapping is complete.
  • There's no schema ambiguity.

Test integrity: why Activate keeps switching off

Two rules guarantee that what goes live always matches what was last tested:

  1. Change the request, lose the response. Any edit to the method, URL, auth, headers, parameters, body, or declared parameters clears the fetched response and flags the mappings for re-validation.
  2. Activate re-arms only on a fresh test. Activate stays disabled until a successful test exists for the current request. Any later change disables it again until you re-test.
⚠️

Note on credential rotation

Rotating a key or password counts as a request change — it triggers a re-test and re-activation. Plan for a quick re-test after rotating secrets.

Set Fallback

Each label carries a fallback value and a required/optional flag.

product_price  →  fallback: "check the site"  (optional)
stock_status   →  fallback: 0                 (optional)
product_tier   →  fallback: "standard"         (optional)
  • Optional labels fail open: if the value is missing, the fallback renders and the message still sends.
  • Required labels fail closed: if the value is missing, the message is skipped for that user rather than sent with a gap.

Fallbacks are non-negotiable. Without one, a degraded API becomes a degraded campaign.



Did this page help you?