Portal Community
Partial updates: Only the fields you provide are updated. Omitting name, defaultCountry, or defaultCurrency leaves those values unchanged on the catalog. You must supply at least one of these optional operation fields for the call to have any effect.

When to Use

Configuration

Connection

FieldRequiredDescription
accessTokenRequiredPermanent System User access token from Meta Business Manager. Store in BizFirst Credentials Manager and reference via {{ $credentials.whatsAppToken }}.
phoneNumberIdRequiredNumeric string ID of the WhatsApp Business phone number (e.g. 123456789012345).
apiVersionOptionalMeta Graph API version, e.g. v18.0. Defaults to v18.0.

Operation

FieldRequiredDescription
catalogIdRequiredThe numeric Facebook Catalog ID to update (e.g. 987654321098765). Must be an existing catalog the System User has access to.
nameOptionalNew display name for the catalog. Visible in Meta Commerce Manager and in WhatsApp product messages. Maximum 100 characters.
defaultCountryOptionalISO 3166-1 alpha-2 country code for the catalog's primary market (e.g. US, GB, IN). Affects default tax and pricing display.
defaultCurrencyOptionalISO 4217 currency code for the catalog's default pricing currency (e.g. USD, GBP, INR). Used when products do not specify an explicit currency.

Sample Configuration

{
  "resource": "commerce",
  "operation": "updateCatalog",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "catalogId": "987654321098765",
  "name": "Autumn Collection 2025",
  "defaultCountry": "US",
  "defaultCurrency": "USD"
}

Validation Errors

ErrorCause
accessToken is requiredThe accessToken field is empty or missing.
catalogId is requiredThe catalogId field is empty or missing.
100 (Meta)Invalid catalog ID or the System User does not have write access to this catalog.
200 (Meta)Permissions error — the access token lacks catalog_management permission.
190 (Meta)Access token expired or revoked. Rotate the token in Meta Business Manager.
100 (Meta — invalid country)The defaultCountry value is not a valid ISO 3166-1 alpha-2 code.
100 (Meta — invalid currency)The defaultCurrency value is not a valid ISO 4217 code.

Output

Success Port

Fires when Meta confirms the catalog update. The response echoes back the catalogId and name fields from the request for confirmation logging.

FieldTypeDescription
successbooleantrue on the success port.
catalogIdstringThe catalog ID that was updated.
namestringThe new catalog name as provided in the request (echoed for confirmation).
statusstring"updated" on the success port.
errorCodestringEmpty on success.
errorMessagestringEmpty on success.
payloadstringFull raw JSON response from the Meta Graph API.

Error Port

Fires when the catalog update is rejected by Meta or when the network call fails.

FieldTypeDescription
successbooleanfalse on the error port.
statusstring"failed" or "error".
errorCodestringMeta error code or BizFirst internal validation code.
errorMessagestringHuman-readable error description.
payloadstringRaw API error response for diagnostics.

Sample Output

{
  "success": true,
  "catalogId": "987654321098765",
  "name": "Autumn Collection 2025",
  "status": "updated",
  "errorCode": "",
  "errorMessage": "",
  "payload": "{\"success\":true}"
}

Expression Reference

ValueExpressionNotes
Updated catalog ID{{ $output.updateCatalog.catalogId }}Pass to downstream product sync nodes to confirm the correct catalog was updated.
New catalog name{{ $output.updateCatalog.name }}Use in audit log entries or confirmation notifications.
Status{{ $output.updateCatalog.status }}Use in an IfCondition node to confirm the update before proceeding with product operations.
Error code{{ $output.updateCatalog.errorCode }}Non-empty on error port. Route to an alert node for governance violations.
Full API response{{ $output.updateCatalog.payload }}Raw JSON string from Meta. Parse with JsonTransform for extended diagnostics.

Node Policies & GuardRails

Policy AreaRecommendation
Credential storageAlways store the access token in BizFirst Credentials Manager. Never embed raw tokens in node configuration.
Catalog name accuracyCatalog names appear on product messages shown to customers. Ensure name changes are reviewed before automated workflows apply them. Consider a human-approval gate for name changes in customer-facing contexts.
Currency consistencyThe defaultCurrency must match the currency used when creating products. Changing the default currency does not retroactively update product prices — update individual product records separately via commerce/updateProduct.
Country code validationValidate ISO 3166-1 alpha-2 country codes before passing them to this node. Invalid codes are rejected by Meta with error 100 and cause the entire update to fail even if the name field was valid.
Change frequencyCatalog metadata updates are low-frequency operations. Do not build workflows that call this node in tight loops. Rate-limit to no more than a few updates per day per catalog.
Error port handlingAlways connect the error port. A failed catalog rename does not affect the catalog's products but may indicate a permission issue that will also block product operations.

Examples

Seasonal Catalog Rename

{
  "resource": "commerce",
  "operation": "updateCatalog",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "catalogId": "987654321098765",
  "name": "{{ $input.seasonName }} Collection {{ $input.year }}"
}

A ScheduledTrigger node fires at the start of each season, reads the new season name and year from a configuration table, and passes them to this node. Only the name field is included — country and currency remain unchanged. A Notification node downstream sends a Slack message confirming the rename.

Market Expansion: Update Default Country and Currency

{
  "resource": "commerce",
  "operation": "updateCatalog",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "catalogId": "987654321098765",
  "defaultCountry": "{{ $input.marketCountryCode }}",
  "defaultCurrency": "{{ $input.marketCurrencyCode }}"
}

When a merchant onboards to a new market, a provisioning workflow reads the target country and currency codes from the merchant's profile and applies them to the catalog. The workflow then triggers a full product re-sync to update individual product prices for the new currency.

Governance Enforcement: Rename Non-Compliant Catalogs

{
  "resource": "commerce",
  "operation": "updateCatalog",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "catalogId": "{{ $input.catalogId }}",
  "name": "{{ $input.brandCode }}-{{ $input.year }}-{{ $input.region }}"
}

A governance workflow loops through all catalogs, applies the naming convention [BrandCode]-[Year]-[Region], and logs each rename. Catalogs already compliant are skipped via an IfCondition node comparing {{ $output.getCatalog.name }} against the expected pattern before calling this node.