Please enable JavaScript to view this site.

Made in EU
Sendinblue Forums

Navigation: Package: sib_custom_objects > Procedures

sib_custom_objects.upsertrecords: Sendinblue Package for Custom Objects operations that could not be mapped to a table.

<Note title="Enterprise access only">Custom objects are only available to Enterprise plans.This feature is in beta. These are subject to change.</Note>Performs bulk create or update (upsert) operations for object records in a single asynchronous request. This endpoint is optimized for high-volume data imports and synchronization scenarios.**How Upsert Works:**- **Create**: Omit `identifiers`, or provide only `ext_id` (if it doesn't already exist). A new record is created with a Brevo-generated `id`.- **Update**: Provide `id` (Brevo internal ID) or an `ext_id` that already exists. The matching record is updated with the new attribute values.- **Important:** `id` is for **updates only**. Providing an `id` that does not belong to an existing record will fail during async processing (the HTTP response will still be 202, but the record will be rejected in the background). To create a new record with a stable external reference, use `ext_id` instead.**Request Structure:**Each object record in the `records` array can include:- `identifiers`: Either `id` (internal Brevo ID) or `ext_id` (your external system ID) — required for updates. **Note:** use `id` (singular), not `ids`.- `attributes`: Key-value pairs where each key is the attribute **key** (e.g., `company_name`), not the attribute label (e.g., "Company Name").- `associations`: Controls linking and unlinking of associated records (optional). Each entry specifies:- `object_type`: The type of the associated object- `action`: `link` (default) to create the association, or `unlink` to remove it- `records`: The associated records to link or unlink (each identified by `ext_id` or `id`)- **Unlink is idempotent** — unlinking a non-existing association is a no-op (no error returned)- `link` and `unlink` actions can be submitted for the same `object_type` in a single record entry- Both associated records must already exist before a link can be created> **Common mistake:** Passing the attribute **label** (the display name you see in the UI) instead of the attribute **key** will cause the attribute to be silently ignored and the record may not be created as expected.**Asynchronous Processing:**- Returns immediately with a `processId` (HTTP 202 Accepted)- Use the processId to track status via the Get process API**API and Schema Limitations:**- Max 1000 object records per request- Max request body size: 1 MB- Max 500 attributes per object record (matches the schema limit of 500 attributes per object)- Unknown attribute keys are silently ignored (no error, no attribute creation)- Max 10 association records per associated object-type in each record of the request. If you need more, send multiple requests.**Important Behaviors:**- The object schema must be created before upserting records- Unknown attribute keys are silently ignored (no error, no creation)- Both associated object records must already exist before creating a link association- Unlink operations are idempotent: attempting to unlink a non-existing association returns success- `link` and `unlink` actions can be submitted for the same `object_type` in a single record entry- Contact objects cannot be created via this endpoint- For `category` and `multiple_category` attributes, pass the option **key** as the value (not the option label or option ID).- The `id` identifier (internal Brevo ID) can only be used for **updating** existing records. To create new records, either omit identifiers (Brevo auto-generates an ID) or provide an `ext_id`.**Errors:**- Make sure both object records exist before associating them, else the API will return an error.- This route does not create objects. The object where the object records are upserted by this API must be created already else the API will return an error "invalid object type".

Parameters of Procedure

The following parameters can be used to control the behaviour of the procedure sib_custom_objects.upsertrecords. A value must be provided at all times for required parameters, but optional parameters in general do not need to have a value and the execution will default to a pre-defined behaviour. Values can be specified by position and by name. In both cases, all parameters not specified will be evaluated using their default values.

Value specification by position is done by listing all values from the first to the last needed value. For example: a `begin package.procedure(value1, value2, value3); end` on a procedure with four parameters will use the default value for the fourth parameter and the specified values for the first three.

Value specification by name is done by listing all values that require a value. For example with `begin package.procedure(name1 => value1, name3 => value3); end` on the same procedure will use the default values for the second and fourth parameters and the specified values for the first and third.

Name

Data Type

Required

Default Value

Documentation

p_object_type

string

 

Object type for the records to upsert. Must be a previously created custom object type. Only lowercase alphanumeric characters and underscores are allowed (max 32 characters).

 

X

Important Safety and Usage Information

Intended Use and Limitations: This software, developed by Invantive, is designed to support a variety of business and information technology data processing functions, such as accounting, financial reporting an sales reporting. It is important to note that this software is not designed, tested, or approved for use in environments where malfunction or failure could lead to life-threatening situations or severe physical or environmental damage. This includes, but is not limited to:

  • Nuclear facilities: The software should not be used for operations or functions related to the control, maintenance, or operation of nuclear facilities.
  • Defense and Military Applications: This software is not suitable for use in defense-related applications, including but not limited to weaponry control, military strategy planning, or any other aspects of national defense.
  • Aviation: The software is not intended for use in the operation, navigation, or communication systems of any aircraft or air traffic control environments.
  • Healthcare and Medicine Production: This software should not be utilized for medical device operation, patient data analysis for critical health decisions, pharmaceutical production, or medical research where its failure or malfunction could impact patient health.
  • Chemical and Hazardous Material Handling: This software is not intended for the management, control, or operational aspects of chemical plants or hazardous material handling facilities. Any malfunction in software used in these settings could result in dangerous chemical spills, explosions, or environmental disasters.
  • Transportation and Traffic Control Systems: The software should not be used for the control, operation, or management of transportation systems, including railway signal controls, subway systems, or traffic light management. Malfunctions in such critical systems could lead to severe accidents and endanger public safety.
  • Energy Grid and Utility Control Systems: This software is not designed for the control or operation of energy grid systems, including electrical substations, renewable energy control systems, or water utility control systems. The failure of software in these areas could lead to significant power outages, water supply disruptions, or other public utility failures, potentially endangering communities and causing extensive damage.
  • Other High-Risk Environments: Any other critical infrastructure and environments where a failure of the software could result in significant harm to individuals or the environment.

User Responsibility: Users must ensure that they understand the intended use of the software and refrain from deploying it in any setting that falls outside of its designed purpose. It is the responsibility of the user to assess the suitability of the software for their intended application, especially in any scenarios that might pose a risk to life, health, or the environment.

Disclaimer of Liability: Invantive disclaims any responsibility for damage, injury, or legal consequences resulting from the use or misuse of this software in prohibited or unintended applications.

  
Disclaimer