Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/_includes/content/syntax-note.md
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<div class="premonition info"><div class="fa fa-info-circle"></div><div class="content"> <p markdown=1>Based on the library you use, the syntax in the examples might be different. You can find library-specific documentation on the [Sources Overview](/docs/connections/sources/) page.</p></div></div>
> info ""
> Based on the library you use, the syntax in the examples might be different. You can find library-specific documentation on the [Sources Overview](/docs/connections/sources/) page.
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ const onExit = async () => {
```

### Collect unflushed events
If you need to preserve all of your events in the instance of a forced timeout, even ones that came in after analytics.flush({ close: true }) was called, you can still collect those events by using:
If you need to preserve all of your events in the instance of a forced timeout, even ones that came in after `analytics.flush({ close: true })` was called, you can still collect those events by using:

```javascript
const unflushedEvents = []
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,10 @@ To do that, Segment recommends that you use a backend template to inject an Iden
Depending on your templating language, your actual Identify call might look something like this:

```js
{% raw %}
analytics.identify(' {{user.id}} ', {
name: '{{user.fullname}}',
email: '{{user.email}}'
});
{% endraw %}
```

With that call in your page footer, you successfully identify every user that visits your site.
Expand Down
4 changes: 2 additions & 2 deletions src/connections/sources/custom-domain.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ Custom Domain is a fully-managed service that enables you to configure a first-p

{% include content/domain-delegation-solutions.md %}

### How DNS subdomain delegation works
## How DNS subdomain delegation works
DNS subdomain delegation is a process where the control of a specific subdomain is assigned to another DNS server, allowing that server to manage the DNS records for the subdomain. This delegation is useful for distributing the management of DNS records and enables specialized handling of subdomain traffic.

### How CNAME records work
## How CNAME records work
When a user tries to access the alias domain, the DNS resolver looks up the CNAME record, finds the canonical name, and resolves it to the IP address of the target. For example, you could alias your subdomain to point to the Segment domain. If a user accesses your site, they are redirected to the Segment domain, but their browser's address bar still shows the alias domain.

CNAME records provide flexibility and centralized management, making it easier to handle domain redirections and subdomain configurations.
Expand Down
8 changes: 4 additions & 4 deletions src/connections/sources/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ analytics.identify('user_123', {
email: '[email protected]',
name: 'Jane Kim'
},
});
);
```
{% endcodeexampletab %}

Expand All @@ -49,7 +49,7 @@ analytics.identify('user_123', {
{% endcomment %}

> info "If you don't see the source you're looking for in the catalog"
> If a tool isn't listed as a supported source in Segment's [catalog](https://segment.com/catalog/){:target='_blank}, it's not possible to incorporate the integration out-of-the-box within a Segment workspace. As an alternative, you can use the [HTTP API](/docs/connections/sources/catalog/libraries/server/http-api/) source to collect data from the tool's API. You can also use [Functions](/docs/connections/functions/) to send or receive data from other tools.
> If a tool isn't listed as a supported source in Segment's [catalog](https://segment.com/catalog/){:target="_blank"}, it's not possible to incorporate the integration out-of-the-box within a Segment workspace. As an alternative, you can use the [HTTP API](/docs/connections/sources/catalog/libraries/server/http-api/) source to collect data from the tool's API. You can also use [Functions](/docs/connections/functions/) to send or receive data from other tools.

## Types of sources

Expand Down Expand Up @@ -167,7 +167,7 @@ Cloud app sources empower you to pull together data from all of your different t
These Cloud App Sources can export data from its third party tool and import it directly into your Segment warehouse. Make sure you have a Segment warehouse enabled before you enable any of the following sources:

{: .columns }
{% capture source-type-list %} {% include content/cloud-source-type-list.md type="object" %} {%endcapture%}
{% capture source-type-list %} {% include content/cloud-source-type-list.md type="object" %} {% endcapture %}
{{source-type-list | markdownify}}


Expand All @@ -176,7 +176,7 @@ These Cloud App Sources can export data from its third party tool and import it
These Cloud App Sources can not only export data into your Segment warehouse, but they can **also** federate the exported data into your other enabled Segment integrations:

{: .columns }
{% capture source-type-list %} {% include content/cloud-source-type-list.md type="event" %} {%endcapture%}
{% capture source-type-list %} {% include content/cloud-source-type-list.md type="event" %} {% endcapture %}
{{source-type-list | markdownify}}

### HTTP
Expand Down
2 changes: 1 addition & 1 deletion src/connections/spec/common.md
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ The `sentAt` timestamp specifies the clock time for the client's device when the

**Note**: The `sentAt` timestamp is not useful for any analysis since it's tainted by user's clock skew.

> warning "Segment now adds `sentAt` to a payload when the batch is complete and initially tried to the Segment API for the Swift, Kotlin, and C# mobile libraries"
> warning "Segment now adds sentAt to a payload when the batch is complete and initially tried to the Segment API for the Swift, Kotlin, and C# mobile libraries"
> This update changes the value of the Segment-calculated `timestamp` to align closer with the `receivedAt` value rather than the `originalTimestamp` value. For most users who are online when events are sent, this does not significantly impact their data. However, if your application utilizes an offline mode where events are queued up for any period of time, the `timestamp` value for those users now more closely reflects when Segment received the events rather than the time they occurred on the users' devices.


Expand Down
2 changes: 1 addition & 1 deletion src/connections/storage/catalog/postgres/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ This error can be caused for a few reasons:
- Your warehouse went offline.
- There's a setting needed for Segment to connect which hasn't been correctly configured. Refer to the [Warehouse documentation](/docs/connections/storage/warehouses/) to ensure all steps outlined there have been followed.

### Schema <schema_name> does not exist
### Schema `<schema_name>` does not exist
The syncs are failing due to a permissions issue. It looks like the user connected does not have permission to create schemas in your warehouse.

To resolve these errors Segment recommends connecting to your warehouse using the owner account, or granting permissions to the current account you use to connect to Segment. You can correct these permissions by running the following SQL statement - Replace `user` with the account you use to connect to Segment, and run this statement for each schema in the warehouse.
Expand Down
4 changes: 1 addition & 3 deletions src/connections/storage/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@ Segment offers several [Data Storage Destinations](/docs/connections/storage/cat
- [Google Cloud Storage](/docs/connections/storage/catalog/google-cloud-storage/) (available to all users)
- [Segment Data Lakes](/docs/connections/storage/data-lakes/) (available to Business Tier customers only)



{% include components/reference-button.html href="https://segment.com/academy/intro/why-you-should-own-your-data/?referrer=docs" icon="media/academy.svg" title="Analytics Academy: Why you should own your data" description="Although the sharing economy is eroding the idea of “ownership,” when it comes to analytics data, we strongly believe that you should own it." %}
{% include components/reference-button.html href="https://segment.com/academy/intro/why-you-should-own-your-data/?referrer=docs" icon="media/academy.svg" title="Analytics Academy: Why you should own your data" description="Although the sharing economy is eroding the idea of ownership, when it comes to analytics data, we strongly believe that you should own it." %}

<!-- TODO:

Expand Down
1 change: 1 addition & 0 deletions src/engage/audiences/linked-audiences-iterable.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ In Iterable, do the following:
![A screenshot of the test event page](/docs/engage/images/send-test-event.png)

If the event is sent successfully to Iterable, you will see a `“message”: “success”` response in Segment.

2. Open Iterable and check the [Campaign tab in Messaging Insights](https://support.iterable.com/hc/en-us/articles/360052814452-Messaging-Insights#viewing-metrics){:target="_blank"} (Insights > Messaging Insights > Campaigns > _[Your Unique Campaign])_ to confirm that Iterable has sent the message.
3. If your email doesn’t look the way you want it to, adjust the [Handlebars syntax](https://support.iterable.com/hc/en-us/articles/205480365-Personalizing-Templates-with-Handlebars#referencing-user-profile-and-event-fields-with-handlebars){:target="_blank"} in Iterable, and send another test event. See the following [personalization examples](#handlebars-examples-to-use-in-iterable){:target="_blank"} for more specific details.
4. When you’re finished testing your campaign, proceed to [Enable your Linked Audience](/docs/engage/audiences/linked-audiences/#step-4-enable-your-linked-audience).
Expand Down
2 changes: 1 addition & 1 deletion src/engage/campaigns/email-campaigns.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Follow these steps to test your campaign:

1. In the **Send an email** pane, navigate to Body, then click **Test email**.
2. If your template has profile traits, enter a trait value for the test email. This ensures that your merge tags work as expected.
- To test a default value, leave the profile traits field blank. Default values must be assigned in your merge tags. For example, `loyal customer` would be the default for the following merge tag: {% raw %}```{{profile.traits.first_name | default: "loyal customer"}}```{% endraw %}.
- To test a default value, leave the profile traits field blank. Default values must be assigned in your merge tags. For example, `loyal customer` would be the default for the following merge tag: {% raw %}```{{profile.traits.first_name | default: "loyal customer"}}```{% endraw %}.
3. In the **Recipients** field, enter the email address(es) that will receive your test email.
4. Click **Send test email**.

Expand Down
2 changes: 1 addition & 1 deletion src/engage/campaigns/sms-campaigns.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ Follow these steps to test your campaign:

1. In the **Send an SMS** pane, click **Test SMS**.
2. If your template has profile traits, enter a trait value for the test SMS. This ensures that your merge tags work as expected.
- To test a default value, leave the profile traits field blank. Default values must be assigned in your merge tags. For example, `loyal customer` would be the default for the following merge tag: {% raw %}```{{profile.traits.first_name | default: "loyal customer"}}```{% endraw %}.
- To test a default value, leave the profile traits field blank. Default values must be assigned in your merge tags. For example, `loyal customer` would be the default for the following merge tag: {% raw %}```{{profile.traits.first_name | default: "loyal customer"}}```{% endraw %}.
3. In the **Recipients** field, enter the phone number(s) that will receive your test SMS.
4. Click **Send test SMS**.

Expand Down
16 changes: 4 additions & 12 deletions src/engage/content/email/template.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,20 +44,12 @@ You can send test emails before you include a template in marketing campaigns.
1. Select the email template you want to test on the Templates screen.
2. From the Template Settings page, click **Test email**.
3. If your template has profile traits, enter a trait value for the test email. This ensures that your merge tags work as expected.
- To test a default value, leave the profile traits field blank. Default values must be assigned in your merge tags. For example, `loyal customer` would be the default for the following merge tag: {% raw %}```{{profile.traits.first_name | default: "loyal customer"}}```{% endraw %}.
- To test traits with arrays, you must input the array in JSON format. For example, `[“item1”, “item2”]` or `[{“itemName”: “shoes”}]`. If you don't use JSON format for arrays in the test message side sheet, your template might not render as expected.
- To test a default value, leave the profile traits field blank. Default values must be assigned in your merge tags. For example, `loyal customer` would be the default for the following merge tag: {% raw %}```{{profile.traits.first_name | default: "loyal customer"}}```{% endraw %}.
- To test traits with arrays, you must input the array in JSON format. For example, `[“item1”, “item2”]` or `[{“itemName”: “shoes”}]`. If you don't use JSON format for arrays in the test message side sheet, your template might not render as expected.
4. Enter recipient email addresses for the test message.
- Profiles that you send test messages to must have a userId in Segment.
- Profiles that you send test messages to must have a userId in Segment.
5. Select **Send test email**.

{% comment %}
> success ""
> When you send a test message, the trait must be valid for the field it's being used in. For example:
> - If you use `profile.traits.first_name` in the **From sender** field, it must be a valid username.
> - If you use `profile.traits.email` in the **Reply to email** field, it must be a valid email address.

{% endcomment %}

> info ""
> You can also test email templates directly from a [Send an Email step](/docs/engage/journeys/build-journey/#send-an-email) in Journeys.

Expand All @@ -73,7 +65,7 @@ Engage supports dynamic sending using merge tags. Personalize email content by a
As you configure the template, click **Merge Tags** and select the profile traits to include. Engage inserts the merge tags based on cursor placement.

> success ""
> - For all merge tags, you must add a `default` value inside a single quote. For example: {% raw %}`{{profile.traits.traits | default: 'Default'}}`{% endraw %}
> - For all merge tags, you must add a `default` value inside a single quote. For example: `{{profile.traits.traits | default: 'Default'}}`
> - Only use variable tags in [liquid sytax](https://liquidjs.com/tags/overview.html){:target="blank"}.

The following table contains a description and some best practices for all fields in the email template. Asterisks indicate required fields.
Expand Down
Loading