# Set signal

## Using `set` signal

The `set` signal is how a partner 1) creates an offer request for a customer and 2) formats the displayed currency in the element.

{% hint style="info" %}
For existing XCover partners, this replaces the create offer API request, with a similar field structure.
{% endhint %}

Call `signalLayer.push()` with `set` as the value for the `signal` property, add `onSet` and `data` as in the following example:

<pre class="language-javascript"><code class="lang-javascript">/* Travel xce-protection-offer example */
window.signalLayer.push({
  signal: 'set',
  element: 'xce-protection-offer',
  onSet: async (req) => {
    try {
      const response = await req
      if (!response) throw new Error('Empty response');
      // your disable checkout logic here..
    } catch (err) {
      console.error('XCE Request Error: ', err);
    }
  },
  data: {
    offer_request: {
      schema: 'demo-partner-travel:1',
      customer:{
        currency: 'AUD',
        country: 'AU',
        language: 'en',
      },
      context: {
<strong>        total_tickets_price: 344,
</strong>        departure_country: 'AU',
        destination_country: 'US',
        is_return: false,
        number_of_children: 0,
        number_of_adults: 1,
        number_of_infants: 0,
        trip_start_date: '2026-05-19T19:03:36.671Z',
        trip_end_date: '2026-05-19T19:02:21.444Z',
        flights: [
          {
            legs: [
              {
                departure_datetime: '2025-09-19T18:59:13.958Z',
                arrival_datetime: '2025-09-19T18:59:13.958Z',
                flight_number: 'SK1530',
                marketing_airline_iata_code: 'SK',
                marketing_airline_icao_code: 'SAS',
                operating_airline_iata_code: 'SK',
                operating_airline_icao_code: 'SAS',
                departure_airport: 'SYD',
                arrival_airport: 'JFK',
                departure_country: 'AU',
                arrival_country: 'US',
              },
            ],
            departure_datetime: '2025-09-19T18:59:13.958Z',
            arrival_datetime: '2025-09-19T18:59:13.958Z',
            departure_country: 'AU',
            departure_city: 'SYD',
            arrival_city: 'JFK',
          },
        ],
      },
    },
    currency_config: {
      trailingZeroDisplay: 'stripIfInteger'
    }
  }
});
</code></pre>

The `onSet` property is a Promise function that will resolve with the quote response if successful, and the `data.offer_request` property is the create offer request body.

{% hint style="warning" %}
In order to get the offer response data for **confirm offer request** make sure to store the response from the `onSet` promise.

The resolved value contains the needed fields for **Confirm Offer** request, including the BrightWrite details object.
{% endhint %}

{% hint style="info" %}
See [Create Offer request fields](https://docs.covergenius.com/xcover-elements/client-integration-examples/requests-and-responses) for a simplified reference to the data object
{% endhint %}
