diff --git a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md index 532df940eb..6cca6e46e5 100644 --- a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md +++ b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md @@ -3,52 +3,63 @@ title: SendGrid Source id: jhr8dT2yHn --- -[SendGrid](http://sendgrid.com){:target="_blank”} is a trusted platform for transactional email and email marketing. +[SendGrid](http://sendgrid.com){:target="_blank”} is a trusted platform for transactional email and email marketing. -Take your company's analysis to the next level by **adding SendGrid as a Source to Segment.** Segment automatically collects events like `Click` or `Delivered` and objects such as `Recipients` or `Campaigns` and loads them into your data warehouse.  +Take your company's analysis to the next level by **adding SendGrid as a Source to Segment**. Segment automatically collects events like `Click` or `Delivered` and objects such as `Recipients` or `Campaigns` and loads them into your data warehouse. -## Getting Started +## Getting started + +### Sendgrid API key Adding SendGrid as a Source in Segment requires a SendGrid API key. If you don't yet have a SendGrid API key, first follow these steps within your SendGrid account: 1. Log in to your SendGrid account. -2. Navigate to **Settings > API Keys**, then click **General API Key**. -3. Name the key and, optionally, adjust its settings. -4. Copy the API Key, omitting all spaces. +2. Navigate to **Settings > API Keys**, then click **Create API Key**. +3. Name the key, configure the key permissions, and click **Create & View**. +4. Make note of the API key as it will not be shown again. -> info "SendGrid API Key Settings" +> info "SendGrid API key settings" > Segment recommends providing read permissions for **Email Activity** and **Marketing Activity**. -To finish adding the SendGrid source, return to your Segment Workspace and follow these steps: +### Set up Sendgrid source -1. From the [Source catalog page](https://app.segment.com/goto-my-workspace/sources/catalog){:target="_blank”} in your Segment workspace, enter **SendGrid** and select the SendGrid source that appears. -2. From the SendGrid information panel that appears, click **Add source**. -3. Give the Source a name and add any labels to help you organize and filter your sources. - Segment recommends a name that reflects the source itself, as this name populates the schema name. For example, the source name `SendGrid` creates the schema `SendGrid`. You can add multiple instances if you have multiple SendGrid accounts. -4. Paste the SendGrid API Key you copied above into the Segment interface. Click **Connect**. -![Screenshot of the Settings page in the setup flow for the Sendgrid source.](images/601347_Key.png) +To add the Sendgrid source to Segment, return to your Segment Workspace and follow these steps: -6. Copy the auto-generated Webhook URL and paste it into SendGrid's Event Notification settings pane under **Settings > Mail Settings**. +1. Navigate to **Connections > Catalog**, and search for "Sendgrid". +2. Click the "Sendgrid" source and click **Add Source**. **Note**: This source only supports [warehouses](docs/connections/storage/warehouses/) as a destination. +3. Give the source a meaningful name and (optional) add any labels to help you organize and filter your sources. Select all of the Warehouse destinations from the existing connections. + > **Note**: Segment recommends that you give your source a name that reflects the source itself as this name populates the schema name. For example, the source name `SendGrid` creates the schema `SendGrid`. You can add multiple instances if you have multiple SendGrid accounts. +4. Add the [SendGrid API key](#sendgrid-api-key) to connect Sendgrid to Segment. Click **Connect**. +![Screenshot of the Settings page in the setup flow for the Sendgrid source.](images/601347_Key.png) +5. Copy the auto-generated Webhook URL from Segment and paste it in your Sendgrid account. Navigate to **Settings > Mail Settings > Event Webhooks** and create a new event webhook. ![Screenshot of the Webhook page in the setup flow for the Sendgrid source.](images/694785_Webhook.png) - -7. Enable Event Notification in SendGrid. Select **Next** and then **Finish** to complete setup. +6. Set up **Selective Sync**. You have the options to: + > * **Configure the source sync schedule**. This is how often the data syncs. The default option is every three hours. + > * **Select the start date**. This is the date from which the first sync happens. If left blank, a full sync is initiated. + > * **Select the collections to sync**. The collections that you select are synced from the start date. +7. Click **Finish** to complete connecting your Sendgrid source to Segment. +8. To set the date from which the sync should start, go to **Settings > Basic Settings**, and configure the start date. Some things to note: + > * Changing the start date after the first sync doesn't change anything unless a full manual sync is initiated. + > * Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected is stored in the warehouse. + > * The default value for Source Sync Schedule in 3 hours. To change the sync schedule, send a message to [friends@segment.com](mailto:friends@segment.com){:target="_blank”}. +9. Toggle **Enable source** on to start syncing data. +10. The first sync begins after you successfully create the source. To review the collections and number of rows synced, go to the **Overview** tab. ### Event URL - -SendGrid has a single Event URL location. By using the SendGrid source, you will be using your only Event URL location. If you remove a pre-existing URL, then that location will no longer receive events. +SendGrid has a single Event URL location. By using the SendGrid source, you'll use your only Event URL location. If you remove a pre-existing URL, then that location no longer receives events. ## Components ### Sync -Segment makes requests to the SendGrid API every three hours. In the initial sync, Segment pulls all SendGrid objects (and their corresponding properties) according to the [Collections Table](#collections) below. If you don't use SendGrid's marketing campaigns features (Legacy or New), these collections will be empty in SendGrid and you'll see "Zero data synced" in your runs. The webhook still processes activity data. +Segment makes requests to the SendGrid API every three hours. In the initial sync, Segment pulls all SendGrid objects (and their corresponding properties) according to the [Collections table](#collections). If you don't use SendGrid's marketing campaigns features (Legacy or New), these collections will be empty in SendGrid and you'll see "Zero data synced" in your runs. The webhook still processes activity data. Segment's sync component pulls and forwards SendGrid resources to Segment using an upsert API. As a result, dimensional data loaded into your warehouse reflects the latest state of the corresponding resource in SendGrid. For example, if `lists.recipient_count` goes from `100` to `200` between syncs, its status will be `200` on its next flush to your warehouse. -The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources sync with Segment every three hours. Depending on your Warehouses plan, Segment pushes the Source data to your warehouse on the interval associated with your billing plan. +The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources sync with Segment every three hours. Depending on your Warehouses plan, Segment pushes the source data to your warehouse on the interval associated with your billing plan. -> info "SendGrid Syncs" -> Segment syncs all objects and properties. [Reach out to support](https://segment.com/help/contact/){:target="_blank”} if you're interested in filtering objects or properties during syncs. +> info "SendGrid syncs" +> Segment syncs all objects and properties. [Reach out to Segment support](https://segment.com/help/contact/){:target="_blank”} if you're interested in filtering objects or properties during syncs. ### Streaming @@ -57,52 +68,50 @@ The SendGrid source's streaming component listens in real time for inbound webho > info "" > If you don't use SendGrid's marketing features, this will be the only data that Segment receives from SendGrid. There isn't a way to retrieve email event history from SendGrid, so you will only have access to data that Segment collected after you successfully enabled this integration. - ## Collections Collections are the groupings of resources Segment pulls from your source. In your warehouse, each collection gets its own table. -**Object** collections are updated with each sync. These are pulled using Segment's sync component. - -**Event** collections are append only, represent a user action or activity, and may be likened to fact tables in a traditional data warehouse. Unlike traditional events captured by Segment, you can't forward these events to Destinations you've configured in your Segment workspace. You can only sync these events to a supported data warehouse. +- **Object** collections are updated with each sync. These are pulled using Segment's sync component. +- **Event** collections are append-only, represent a user action or activity, and may be likened to fact tables in a traditional data warehouse. Unlike traditional events captured by Segment, you can't forward these events to destinations you've configured in your Segment workspace. You can only sync these events to a supported data warehouse. | Collection | Type | Description | | ------ | ------ | ------ | | activity | Event | The union of all SendGrid **event** tables. Useful for creating funnels. | -| _open | Event | Recipient has opened the HTML message. Enable Open Tracking to get this type of event. | -| click | Event | Recipient clicked on a link within the message. Enable Click Tracking to get this type of event. | +| open | Event | Recipient has opened the HTML message. Enable **Open Tracking** to get this type of event. | +| click | Event | Recipient clicked on a link within the message. Enable **Click Tracking** to get this type of event. | | bounce | Event | Receiving server could not or would not accept message. | | delivered | Event | Message has been successfully delivered to the receiving server. | | processed | Event | Triggered when the email is processed. | -| dropped | Event | You may see the following drop reasons: Invalid SMTPAPI header, Spam Content (if spam checker app enabled), Unsubscribed Address, Bounced Address, Spam Reporting Address, Invalid, Recipient List over Package Quota | +| dropped | Event | You may see the following drop reasons: `Invalid SMTPAPI header`, `Spam Content` (if spam checker app enabled), `Unsubscribed Address`, `Bounced Address`, `Spam Reporting Address`, `Invalid`, `Recipient List over Package Quota`. | | deferred | Event | Recipient's email server temporarily rejected message. | -| unsubscribe | Event | Recipient clicked on message's subscription management link. You need to enable Subscription Tracking for getting this type of event. | -| mc_contacts | Object | A sample of fifty latest contacts uploaded or linked from the list, returned from [Sendgrid](https://docs.sendgrid.com/api-reference/contacts/get-sample-contacts){:target="_blank"}. **Will only return data if you're using SendGrid's New Marketing Campaign features.** | -| mc_lists | Object | Lists returned from [Sendgrid Lists endpoint](https://docs.sendgrid.com/api-reference/lists/get-all-lists){:target="_blank"}. **Will only return data if you're using SendGrid's New Marketing Campaign features.** | -| mc_single_sends | Object | Single Sends with condensed details about each from [Sendgrid Single Sends endpoint](https://docs.sendgrid.com/api-reference/single-sends/get-all-single-sends){:target="_blank"}. **Will only return data if you're using SendGrid's New Marketing Campaign features.** | +| unsubscribe | Event | Recipient clicked on message's subscription management link. You need to enable **Subscription Tracking** for getting this type of event. | +| mc_contacts | Object | A sample of fifty latest contacts uploaded or linked from the list, returned from [Sendgrid](https://docs.sendgrid.com/api-reference/contacts/get-sample-contacts){:target="_blank"}. **Only returns data if you're using SendGrid's New Marketing Campaign features.** | +| mc_lists | Object | Lists returned from [Sendgrid Lists endpoint](https://docs.sendgrid.com/api-reference/lists/get-all-lists){:target="_blank"}. **Only returns data if you're using SendGrid's New Marketing Campaign features.** | +| mc_single_sends | Object | Single Sends with condensed details about each from [Sendgrid Single Sends endpoint](https://docs.sendgrid.com/api-reference/single-sends/get-all-single-sends){:target="_blank"}. **Only returns data if you're using SendGrid's New Marketing Campaign features.** | | spam_report | Event | Recipient marked message as spam. | -| lists | Object | [Groups of contacts](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html){:target="_blank”}. **Will only return data if you had Legacy Marketing Campaigns data** | -| segments | Object | [Slices of lists](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html){:target="_blank”}. **Will only return data if you had Legacy Marketing Campaigns data** | -| recipients | Object | All contacts who have received an email, with information about their last activities and custom activities. [More Info](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html){:target="_blank”}. **Will only return data if you had Legacy Marketing Campaigns data** | -| campaigns | Object | All campaigns you've created in SendGrid. [More Info](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/campaigns.html){:target="_blank”}. **Will only return data if you had Legacy Marketing Campaigns data** | +| lists | Object | [Groups of contacts](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html){:target="_blank”}. **Only returns data if you had Legacy Marketing Campaigns data.** | +| segments | Object | [Slices of lists](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html){:target="_blank”}. **Only returns data if you had Legacy Marketing Campaigns data.** | +| recipients | Object | All contacts who have received an email, with information about their last activities and custom activities. For more information, see the [Sendgrid docs](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html){:target="_blank”}. **Only returns data if you had Legacy Marketing Campaigns data.** | +| campaigns | Object | All campaigns you've created in SendGrid. For more information, see the [Sendgrid docs](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/campaigns.html){:target="_blank”}. **Only returns data if you had Legacy Marketing Campaigns data.** | ## Troubleshooting -### Invalid Credentials error +#### Invalid credentials error If you're getting an "Invalid Credentials" error when setting up the SendGrid source, send a direct ping to the [SendGrid Marketing Campaigns API](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/campaigns.html){:target="_blank”} to test if you're using the correct credentials. Make sure you allowlist Segment IP addresses on SendGrid. [Contact Segment](https://segment.com/help/contact/){:target="_blank”} for the list of IP addresses to allowlist. -### Webhook configuration +#### Webhook configuration -When you disable your SendGrid source, you'll need to also disable the webhook portion of your configuration. +When you disable your SendGrid source, you also need to disable the webhook portion of your configuration. -If you are only able to create one webhook, review your SendGrid [account plan details](https://sendgrid.com/en-us/pricing). On the Sendgrid free plan, you can only have 1 webhook. +If you are only able to create one webhook, review your SendGrid [account plan details](https://sendgrid.com/en-us/pricing). On the Sendgrid free plan, you can only have one webhook. -### Zero data or partial data syncs +#### Zero data or partial data syncs If you haven't subscribed to SendGrid’s marketing campaign features, the object collections do not sync. As a result, you might see “Zero data synced” in your runs on Source Overview page. If you have only selected a few objects to be synced, then only those objects are synced and show up in the Source Overview. -In both cases, the webhook still processes event data and syncs it to the warehouse. To view the data synced to the warehouse, navigate to **Connections > Destinations**, select the relevant Warehouse Destination, and then select the Source schema. +In both cases, the webhook still processes event data and syncs it to the warehouse. To view the data synced to the warehouse, navigate to **Connections > Destinations**, select the relevant warehouse destination, and then select the source schema. diff --git a/src/connections/sources/catalog/cloud-apps/twilio/index.md b/src/connections/sources/catalog/cloud-apps/twilio/index.md index 7d6322d09c..13e79fd74e 100644 --- a/src/connections/sources/catalog/cloud-apps/twilio/index.md +++ b/src/connections/sources/catalog/cloud-apps/twilio/index.md @@ -6,159 +6,160 @@ id: 43bb279b7 [Twilio](http://twilio.com){:target="_blank”} is a developer platform for communications. Software teams use Twilio APIs to add capabilities like voice, video, and messaging to their applications. This enables businesses to provide the right communications experience for their customers. Behind Twilio APIs is a Super Network, a software layer that connects and optimizes communications networks around the world. This is what allows users to reliably call and message anyone anywhere. -## Getting Started - -1. From your workspace's `/sources` page, click `Add source`. - -2. Choose Twilio. - -3. Give the source a nickname and a schema name. The nickname is a label used in the Segment interface, and the schema name is the namespace you query against in your warehouse. Both can be whatever you like, but we recommend sticking to something that reflects the source itself, like `Twilio` for nickname and `twilio` or `twilio_prod` for the schema name. - - **Note**: You can add multiple instances if you have multiple Twilio accounts. That's why we allow you to customize the source's nickname and schema name! - -4. When you click **Connect**, you'll be prompted for your Twilio Account SID. You can find it on your Twilio account under the project settings. - -5. You'll be re-directed to Twilio's app and you'll need to authorize Segment to read from your account data. To authorize, click in the "Allow" button. Once approved, you'll be redirected back to the set up page in the Segment app. - -6. Click on the "Finish" button and you'll be good to go! - -We'll begin syncing your Twilio data into Segment momentarily, and it will be written to your warehouse at your next Warehouse run. +## Getting started + +1. Navigate to **Connections > Catalog** and from the sources tab, search for “Twilio” and click on the tile. +2. Click **Add Source**, to create a new Twilio source. **Note**: This source only supports [warehouses](docs/connections/storage/warehouses/) as a destination. +3. Give the source a meaningful name and (optional) add labels. Add the Twilio SID, which can be found in your Twilio account. + > **Note**: Segment recommends that you give your source a name that reflects the source itself as this name populates the schema name. For example, `Twilio` for nickname and `twilio` or `twilio_prod` for the schema name. You can add multiple instances if you have multiple Twilio accounts. +4. Sign into your Twilio account and select the account that you want to sync data from to Segment. +5. Add the Twilio SID, which can be found in your Twilio account, in **Project Settings**. Click **Authenticate**. +6. Once connected successfully, click **Next** to setup the SQL schema. +7. Verify the schema and click **Next**. +8. Set up **Selective Sync**. You have the options to: + > * **Configure the source sync schedule**. This is how often the data syncs. The default option is every three hours. + > * **Select the start date**. This is the date from which the first sync happens. If left blank, a full sync is initiated. + > * **Select the collections to sync**. The collections that you select are synced from the start date. +9. Click **Done** to complete integrating your Twilio account with Segment. Some things to note: +10. To set the date from which the sync should start, go to **Settings > Basic Settings**, and configure the start date. Some things to note: + > - Changing the start date after the first sync doesn't change anything unless a full manual sync is initiated. + > - Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected is stored in the warehouse. + > - The default value for Source Sync Schedule in 3 hours. To change the sync schedule, send a message to [friends@segment.com](mailto:friends@segment.com){:target="_blank”}. +11. Toggle **Enable source** on to start syncing data. +12. The first sync begins after you successfully create the source. To review the collections and number of rows synced, go to the **Overview** tab. ## Components ### Sync -The Twilio source is built with a sync component, which means we'll make requests to their API on your behalf on a 3 hour interval to pull the latest data into Segment. In the initial sync, we'll grab all the Twilio objects (and their corresponding properties) according to the Collections Table below. The objects will be written into a separate schema, corresponding to the source instance's schema name you designated upon creation (ie. `twilio_prod.charges`). - -Our sync component uses an upsert API, so the data in your warehouse loaded using sync will reflect the latest state of the corresponding resource in Twilio. For example, if `ticket_status` goes from `open` to `closed` between syncs, on its next sync that tickets status will be `closed`. +The Twilio source is built with a sync component, which means Segment makes requests to Twilio's API on a three hour interval to pull in the latest data. In the initial sync, Segment grabs all the Twilio objects (and their corresponding properties) according to the [Collections table](#collections). The objects are written into a separate schema, corresponding to the source instance's schema name you designated upon creation (for example, `twilio_prod.charges`). -The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources will sync with Segment every 3 hours. Depending on your Warehouses plan, we will push the Source data to your warehouse on the interval associated with your billing plan. +Segment's sync component uses an upsert API, so the data in your warehouse loaded using sync reflects the latest state of the corresponding resource in Twilio. For example, if `ticket_status` goes from `open` to `closed` between syncs, on its next sync that tickets status will be `closed`. -At the moment, we don't support filtering which objects or properties get synced. If you're interested in this feature, [let us know](https://segment.com/help/contact){:target="_blank”}! +The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources sync with Segment every 3 hours. Depending on your Warehouses plan, Segment pushes the source data to your warehouse on the interval associated with your billing plan. +> warning "" +> Segment doesn't support filtering which objects or properties get synced. ## Collections Collections are the groupings of resources we pull from your source. In your warehouse, each collection gets its own table. - | Collection | Type | Description | | ------ | ------ | ------ | -| addresses | object | An [address](https://www.twilio.com/docs/api/rest/addresses){:target="_blank”} represents your or your customer's physical location within a country | -| calls | object | A [call](https://www.twilio.com/docs/voice/api/call){:target="_blank”} represents a connection between a telephone and Twilio | -| conferences | object | The [conference](https://www.twilio.com/docs/api/rest/conference){:target="_blank”} allows you to query and manage the state of individual conferences | -| transcriptions | object | A [transcription](https://www.twilio.com/docs/api/rest/transcription){:target="_blank”} represents a transcription of a recording | -| messages | object | A [message](https://www.twilio.com/docs/api/rest/message){:target="_blank”} represents an inbound or outbound message | -| call_feedback | object | The [call feedback](https://www.twilio.com/docs/api/rest/call-feedback){:target="_blank”} subresource provides a simple API to report the quality experienced during a phone call | - +| addresses | object | An [address](https://www.twilio.com/docs/api/rest/addresses){:target="_blank”} represents your or your customer's physical location within a country. | +| calls | object | A [call](https://www.twilio.com/docs/voice/api/call){:target="_blank”} represents a connection between a telephone and Twilio. | +| conferences | object | The [conference](https://www.twilio.com/docs/api/rest/conference){:target="_blank”} allows you to query and manage the state of individual conferences. | +| transcriptions | object | A [transcription](https://www.twilio.com/docs/api/rest/transcription){:target="_blank”} represents a transcription of a recording. | +| messages | object | A [message](https://www.twilio.com/docs/api/rest/message){:target="_blank”} represents an inbound or outbound message. | +| call_feedback | object | The [call feedback](https://www.twilio.com/docs/api/rest/call-feedback){:target="_blank”} subresource provides a simple API to report the quality experienced during a phone call. | -## Collection Properties -Below are tables outlining the properties included in the collections listed above. +## Collection properties +The following tables outline the properties included in collections: ### Addresses | Property Name | Description | | ------ | ------ | -| account_sid | The unique id of the Account responsible for creating this Call | -| city | The city in which you or your customer is located | -| customer_name | The caller's name if this Call was an incoming call to a phone number with Caller ID Lookup enabled | -| emergency_enabled | This is a value that indicates if emergency calling has been enabled on this number. Possible values are true or false | -| friendly_name | A human-readable description of the address. Maximum 64 characters | -| iso_country | The ISO country code of your or your customer's address | -| postal_code | The postal code in which you or your customer is located | -| region | The state or region in which you or your customer is located | -| street | The number and street address where you or your customer is located | -| received_at | This timestamp is added to incoming records as soon as they hit Segment API | -| validated | This value will be true if the Address has been validated, or false for countries that don't require validation or if the Address is non-compliant | +| account_sid | The unique ID of the account responsible for creating this call. | +| city | The city in which you or your customer is located. | +| customer_name | The caller's name if this call was an incoming call to a phone number with Caller ID Lookup enabled. | +| emergency_enabled | This is a value that indicates if emergency calling has been enabled on this number. Possible values are `true` or `false`. | +| friendly_name | A human-readable description of the address. Maximum 64 characters. | +| iso_country | The ISO country code of your or your customer's address. | +| postal_code | The postal code in which you or your customer is located. | +| region | The state or region in which you or your customer is located. | +| street | The number and street address where you or your customer is located. | +| received_at | This timestamp is added to incoming records as soon as they hit Segment API. | +| validated | This value is `true` if the address has been validated, or `false` for countries that don't require validation or if the address is non-compliant. | ### Calls | Property Name | Description | | ------ | ------ | -| account_sid | The unique id of the Account responsible for creating this Call | -| api_version | The API Version used to create the Call | -| caller_name | The caller's name if this Call was an incoming call to a phone number with Caller ID Lookup enabled | -| date_created | The date that this resource was created, given as GMT in RFC 2822 format | -| date_updated | The date that this resource was last updated, given as GMT in RFC 2822 format | -| direction | A string describing the direction of the Call. Values are inbound for inbound calls, outbound-api for calls initiated using the REST API or outbound-dial for calls initiated by a `` verb | -| duration | The length of the Call in seconds. This value is empty for busy, failed, unanswered or ongoing calls | -| end_time | The time the Call ended, given as GMT in RFC 2822 format. Empty if the call did not complete successfully | -| forwarded_from | The forwarding phone number if this Call was an incoming call forwarded from another number (depends on carrier supporting forwarding) | -| from | The phone number, SIP address, Client identifier or SIM SID that made this Call | -| parent_call_sid | A 34-character string that uniquely identifies the Call that created this leg | -| phone_number_sid | If the call was inbound, this is the Sid of the IncomingPhoneNumber that received the call. If the call was outbound, it is the Sid of the OutgoingCallerId from which the call was placed | -| price | The charge for this Call, in the currency associated with the account. Populated after the call is completed | -| received_at | This timestamp is added to incoming records as soon as they hit Segment API | -| start_time | The start time of the call, given as GMT in RFC 2822 format. Empty if the call has not yet been dialed | -| status | A string representing the status of the Call. May be queued, ringing, in-progress, canceled, completed, failed, busy or no-answer | -| to | The phone number, SIP address, Client identifier or SIM SID that received this Call | +| account_sid | The unique ID of the account responsible for creating this call. | +| api_version | The API version used to create the call. | +| caller_name | The caller's name if this call was an incoming call to a phone number with Caller ID Lookup enabled. | +| date_created | The date that this resource was created, given as GMT in [RFC 2822](https://en.wikipedia.org/wiki/Email#Message_format){:target="_blank"} format. | +| date_updated | The date that this resource was last updated, given as GMT in RFC 2822 format. | +| direction | A string describing the direction of the call. Values are inbound for inbound calls, outbound-api for calls initiated using the REST API or outbound-dial for calls initiated by a `` verb. | +| duration | The length of the call in seconds. This value is empty for `busy`, `failed`, `unanswered`, or `ongoing calls`. | +| end_time | The time the call ended, given as GMT in RFC 2822 format. Empty if the call did not complete successfully. | +| forwarded_from | The forwarding phone number if this call was an incoming call forwarded from another number (depends on carrier supporting forwarding). | +| from | The phone number, SIP address, client identifier or SIM SID that made this call. | +| parent_call_sid | A 34-character string that uniquely identifies the call that created this leg. | +| phone_number_sid | If the call was inbound, this is the SID of the `IncomingPhoneNumber` that received the call. If the call was outbound, it is the SID of the `OutgoingCallerId` from which the call was placed. | +| price | The charge for this call, in the currency associated with the account. Populated after the call is completed. | +| received_at | This timestamp is added to incoming records as soon as they hit Segment API. | +| start_time | The start time of the call, given as GMT in RFC 2822 format. Empty if the call has not yet been dialed. | +| status | A string representing the status of the call. May be `queued`, `ringing`, `in-progress`, `canceled`, `completed`, `failed`, `busy`, or `no-answer`. | +| to | The phone number, SIP address, client identifier, or SIM SID that received this call. | ### Conferences | Property Name | Description | | ------ | ------ | -| account_sid | The unique id of the Account responsible for creating this conference | -| date_created | The date that this conference was created, given as GMT in RFC 2822 format | -| date_updated | The date that this conference was last updated, given as GMT in RFC 2822 format | -| friendly_name | A user provided string that identifies this conference room | -| region | A string representing the Twilio Region where the conference audio was mixed | -| status | A string representing the status of the conference. May be init, in-progress, or completed | +| account_sid | The unique ID of the account responsible for creating this conference. | +| date_created | The date that this conference was created, given as GMT in RFC 2822 format. | +| date_updated | The date that this conference was last updated, given as GMT in RFC 2822 format. | +| friendly_name | A user provided string that identifies this conference room. | +| region | A string representing the Twilio region where the conference audio was mixed. | +| status | A string representing the status of the conference. May be `init`, `in-progress`, or `completed`. | ### Transcriptions | Property Name | Description | | ------ | ------ | -| account_sid | The unique id of the Account responsible for creating this Call | -| date_created | The date that this resource was created, in RFC 2822 format | -| date_updated | The date that this resource was last updated, in RFC 2822 format | -| duration | The duration of the transcribed audio, in seconds | -| price | The charge for this transcript in the currency associated with the account | -| recording_sid | The unique id of the Recording that created this Transcription | -| status | A string representing the status of the transcription: in-progress, completed or failed | -| transcription_text | The text content of the transcription | +| account_sid | The unique ID of the account responsible for creating this call. | +| date_created | The date that this resource was created, in RFC 2822 format. | +| date_updated | The date that this resource was last updated, in RFC 2822 format. | +| duration | The duration of the transcribed audio, in seconds. | +| price | The charge for this transcript in the currency associated with the account. | +| recording_sid | The unique ID of the recording that created this transcription. | +| status | A string representing the status of the transcription: `in-progress`, `completed`, or `failed`. | +| transcription_text | The text content of the transcription. | ### Messages | Property Name | Description | | ------ | ------ | -| account_sid | The unique id of the Account responsible for creating this Call | -| api_version | The version of the Twilio API used to process the message | -| body | The text body of the message. Up to 1600 characters long | -| date_created | The date that this resource was created, given in RFC 2822 format | -| date_sent | The date that the message was sent. For outgoing messages, this is the date that the message was sent from Twilio's platform | -| date_updated | The date that this resource was last updated, given in RFC 2822 format | -| direction | The direction of this message. inbound for incoming messages, outbound-api for messages initiated using the REST API, outbound-call for messages initiated during a call or outbound-reply for messages initiated in response to an incoming message | -| error_code | The error code, if any, associated with your message | -| error_message | The human readable description of the ErrorCode above. If the message status is failed or undelivered it will have one of the values described below, otherwise, it will be null | -| from | The phone number (in E.164 format), alphanumeric sender ID, or Wireless SIM that initiated the message | -| num_media | This property indicates the number of media files associated with the message. Each message may send up to 10 media files | -| num_segments | This property indicates the number of segments that make up the message. If your body is too large to be sent as a single SMS message, it will be segmented and charged accordingly | -| price | The amount billed for the message, in the currency associated with the account | -| status | The status of this message. Either accepted, queued, sending, sent,failed, delivered, undelivered, receiving or received. See detailed descriptions of these statuses below | -| to | The phone number that received the message in E.164 format. For incoming messages, this will be one of your Twilio phone numbers. For outgoing messages, this will be the remote phone | - - -### Call Feedback +| account_sid | The unique ID of the account responsible for creating this call. | +| api_version | The version of the Twilio API used to process the message. | +| body | The text body of the message. Up to 1600 characters long. | +| date_created | The date that this resource was created, given in RFC 2822 format. | +| date_sent | The date that the message was sent. For outgoing messages, this is the date that the message was sent from Twilio's platform. | +| date_updated | The date that this resource was last updated, given in RFC 2822 format. | +| direction | The direction of this message: `inbound` for incoming messages, `outbound-API` for messages initiated using the REST API, `outbound-call` for messages initiated during a call or `outbound-reply` for messages initiated in response to an incoming message. | +| error_code | The error code associated with your message. | +| error_message | The human readable description of the `ErrorCode`. If the message status is `failed` or `undelivered` it will have one of the values described in the [Call feedback table](#call-feedback), or it will otherwise be `null`. | +| from | The phone number (in E.164 format), alphanumeric sender ID, or wireless SIM that initiated the message. | +| num_media | This property indicates the number of media files associated with the message. Each message can send up to 10 media files. | +| num_segments | This property indicates the number of segments that make up the message. If your body is too large to be sent as a single SMS message, it is segmented and charged accordingly. | +| price | The amount billed for the message, in the currency associated with the account. | +| status | The status of this message. Either `accepted`, `queued`, `sending`, `sent`, `failed`, `delivered`, `undelivered`, `receiving`, or `received`.| +| to | The phone number that received the message in E.164 format. For incoming messages, this is one of your Twilio phone numbers. For outgoing messages, this is the remote phone. | + + +### Call feedback | Property Name | Description | | ------ | ------ | -| quality_score | 1 to 5 quality score where 1 represents imperfect experience and 5 represents a perfect call | - +| quality_score | A 1-to-5 quality score, where 1 represents imperfect experience and 5 represents a perfect call. | -## Adding Destinations -Currently, Warehouses are the only supported destination for object-cloud sources. +## Adding destinations +Currently, warehouses are the only supported destination for [object-cloud](docs/connections/sources/about-cloud-sources/#object-cloud-app-sources]) sources. ## Adding sub-accounts -If you'd like to sync multiple twilio sub-accounts, just follow the steps below! -1. Set up a source for each sub-account -2. Disable the source right after creation to avoid syncing data from the default account -3. [Contact us](https://segment.com/help/contact){:target="_blank”} specifying you would like to add a sub-account to a Twilio source, include a link to the Twilio source(s), and finally, do not forget to include the sub-account SID! +To sync multiple twilio sub-accounts, follow these steps: +1. Set up a source for each sub-account. +2. Disable the source right after creation to avoid syncing data from the default account. +3. [Contact Segment](https://segment.com/help/contact){:target="_blank”} specifying you'd like to add a sub-account to a Twilio source, including a link to the Twilio source. Do not forget to include the sub-account SID.