Skip to content

Commit d0f86f8

Browse files
committed
alt text
1 parent b7a775c commit d0f86f8

13 files changed

+70
-43
lines changed

src/connections/storage/warehouses/redshift-tuning.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ As your data volume grows and your team writes more queries, you might be runnin
1515

1616
To check if you're getting close to your max, run this query. It will tell you the percentage of storage used in your cluster. Segment recommends that you don't exceed 75-80% of your storage capacity. If you approach that limit, consider adding more nodes to your cluster.
1717

18-
![](images/asset_HvZs8FpE.png)
18+
```json
19+
SELECT sum(pct_used);
20+
FROM svv_table_info;
21+
```
1922

2023
[Learn how to resize your cluster.](http://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html)
2124

@@ -51,7 +54,7 @@ If you have multiple ETL processes loading into your warehouse at the same time,
5154

5255
If you're a Segment Business Tier customer, you can schedule your sync times under Warehouses Settings.
5356

54-
![](images/asset_fRccrNNd.png)
57+
![Screenshot of the Warehouse Settings page, with the Sync Schedule tab selected.](images/asset_fRccrNNd.png)
5558

5659
You also might want to take advantage of Redshift's [Workload Management](http://docs.aws.amazon.com/redshift/latest/dg/c_workload_mngmt_classification.html) that helps ensure fast-running queries won't get stuck behind long ones.
5760

@@ -70,7 +73,7 @@ Segment's initial recommendation is for 2 WLM queues:
7073
2. leave the default queue with a concurrency of `5`
7174

7275

73-
![](images/asset_sHNEIURK.png)
76+
![Screenshot of the Workload Management Configuration settings page in AWS with a named queue, Queue 1, and the default queue present.](images/asset_sHNEIURK.png)
7477

7578
Generally, Segment is responsible for most writes in the databases Segment connects to, so having a higher concurrency allows Segment to write as fast as possible. If you're also using the same database for your own ETL process, you may want to use the same concurrency for both groups. You may even require additional queues if you have other applications writing to the database.
7679

src/connections/storage/warehouses/redshift-useful-sql.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ where event = 'completed_order'
5858

5959
That SQL query returns a table that looks like this:
6060

61-
![](images/sql-redshift-table-1.jpg)
61+
![Screenshot of a SQL table, with event, event_id, user_id, sent_at, item, color, size, and payment columns.](images/sql-redshift-table-1.jpg)
6262

6363
But why are there columns in the table that weren't a part of the Track call, like `event_id`?
6464
This is because the Track method (for client-side libraries) includes additional properties of the event, like `event_id`, `sent_at`, and `user_id`!

src/engage/audiences/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ Before you can download the CSV, you will need to generate it. There are three d
207207

208208
<table>
209209
<tr>
210-
<td>![](/docs/engage/images/large_audience_csv.png)</td>
210+
<td>![Screenshot of the Download audience list popup in Segment, with the All external ID types and Unformatted settings selected.](/docs/engage/images/large_audience_csv.png)</td>
211211
<td width="45%">Generating a CSV can take a substantial amount of time for large audiences (around 30 seconds for a formatted CSV with 1 million rows). For CSVs that are expected to take over 20 seconds, Segment displays an estimated generation time. After you generate the CSV file, leave the modal window open while Segment creates the file.
212212
(If the audience recalculates between when you click Generate and when you download the file, you might want to regenerate the file. The CSV is a snapshot from when you clicked Generate, and could be outdated.)</td>
213213
</tr>

src/getting-started/01-what-is-segment.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ In a nutshell, the Segment libraries ([Sources](/docs/connections/sources/catalo
77

88
## Overview
99

10-
![](images/subwaymap-2.png)
10+
![Diagram showing that data is routed from your sources, through Segment, and downstream to your destinations.](images/subwaymap-2.png)
1111

1212
[Segment Spec methods](/docs/connections/spec/) are how you collect interaction data from your interfaces, and the [Sources](/docs/connections/sources/) are what you package with your interfaces to collect and route the data.
1313

@@ -71,7 +71,7 @@ Segment maintains a catalog of destinations where you can send your data.
7171

7272
<!--TODO: big list o' destinations image (programmatically update?) should go here-->
7373

74-
![](images/dests_grid.png)
74+
![""](images/dests_grid.png)
7575

7676

7777
<div class="double">

src/getting-started/02-simple-install.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ Make note of or write down your write key, as you'll need it in the next steps.
5151

5252
Any time you change a library's settings in the Segment App, the write key regenerates.
5353

54-
![](/docs/connections/images/find_writekey.png)
54+
![Screenshot of a source's settings page, with the API Keys tab selected.](images/find_writekey.png)
5555

5656
> info ""
5757
> [Cloud-sources](/docs/connections/sources/about-cloud-sources/) do not have write keys, as they use a token or key from your account with that service. Cloud-sources have other considerations and aren't part of this tutorial.
@@ -388,7 +388,7 @@ Once you've set up your Segment library, and instrumented at least one call, you
388388

389389
The Source Debugger is a real-time tool that helps you confirm that API calls made from your website, mobile app, or servers arrive at your Segment Source, so you can quickly see how calls are received by your Segment source, so you can troubleshoot quickly without having to wait for data processing.
390390

391-
![](/docs/connections/sources/images/debugger_view.png)
391+
![Screenshot of a source's Debugger, with a Track call selected and the Pretty view for a sample event.](/docs/connections/sources/images/debugger_view.png)
392392

393393
The Debugger is separate from your workspace's data pipeline, and is not an exhaustive view of all the events ever sent to your Segment workspace. The Debugger only shows a sample of the events that the Source receives in real time, with a cap of 500 events. The Debugger is a great way to test specific parts of your implementation to validate that events are being fired successfully and arriving to your Source.
394394

@@ -399,7 +399,7 @@ The Debugger shows a live stream of sampled events arriving at the Source, but y
399399

400400
You can search on any information you know is available in an event payload to search in the Debugger and show only matching payloads. You can also use advanced search options to limit the results to a specific event.
401401

402-
![](/docs/connections/sources/images/debugger_search.png)
402+
![Screenshot of the Event Debugger Advanced settings.](/docs/connections/sources/images/debugger_search.png)
403403

404404

405405
Two views are available when viewing a payload:

src/getting-started/04-full-install.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,17 @@ A Track call is the most basic type of call, and can represent any type of event
3636

3737
## Identify calls
3838

39-
![](images/identify-call.png)
39+
<!---![An identify event that identifies Michael Phillips, a customer who lives in New York, New York.](images/identify-call.png)--->
4040

41+
```js
42+
analytics.identify (user_id: "12345abcde",
43+
traits: {
44+
45+
name: 'Michael Phillips',
46+
city: 'New York',
47+
state: 'NY',
48+
internal: True })
49+
```
4150

4251
The Identify call allows Segment to know **who** is triggering an event.
4352

src/guides/how-to-guides/automated-multichannel-reengagement.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Before we proceed, it's important to register for these tools and enable them on
2323

2424
## Set it up
2525

26-
![](images/auto-multi_aXa02yaL.png)
26+
![Diagram showing tracking data moving from your source, to Segment, and then to Braze, customer.io, and AdRoll.](images/auto-multi_aXa02yaL.png)
2727

2828
When you send tracking data from your app or website to Segment, Segment will send the same data to all of your tools. Segment also collects key messaging events like Push Notification Opened and Email Opened from Braze and Customer.io, respectively, and sends that to other tools. By defining cohorts based on these events, you can create dynamic campaign audiences, to which customers can add and remove themselves.
2929

@@ -33,21 +33,21 @@ In each of your destinations—Braze, Facebook, Customer.io, AdRoll—you can cr
3333

3434
In Braze, create a segment of customers who added a product to their cart, but did not check out. The segment definition, in this case, should be people who have performed `Product Added`, but have not performed `Order Completed` . Send a push notification to these customers with a message that the cart was abandoned and that they can complete the transaction with a 10% coupon (or up to you).
3535

36-
![](images/auto-multi_DDMDnUuY.png)
36+
![An Apple iPhone with a push notification from Toastmates that says Oh no! You left something in your basket.](images/auto-multi_DDMDnUuY.png)
3737

3838
## 2nd Line of Defense: The Email Reminder
3939

4040
Because Segment automatically collects second-party data from Braze, you now also have push notification event data, like `Push Notification Opened` and `Push Notification Received` in Segment. You can use the `properties` on each of these events to define a property called `campaign_name` so you can tie these activities to a given campaign.
4141

42-
![](images/auto-multi_262jquPl.png)
42+
![Screenshot of an email from Toastmates reminding the customer that they have a toast in their cart and giving them a coupon and a direct link to their cart.](images/auto-multi_262jquPl.png)
4343

4444
This is helpful because now, you can define segments in Customer.io for customers who have triggered `Push Notification Received`, but not `Push Notification Opened` . You've now automated the process of targeting customers who don't open your push notifications. In Customer.io, From here, you can create a campaign that sends an email to those people asking them to check their push notifications and offering them a coupon to complete their order.
4545

4646
## 3rd Line of Defense: Paid Advertising
4747

4848
Since Segment collects email event data, like `Email Opened`, from Customer.io, you can similarly create segments in Facebook Ads and AdRoll for when customers don't open your email. Create a segment where users have an `Email Delivered` event, but no `Email Opened` event. When users meet these criteria, they'll get automatically added to your retargeting campaigns. You can then serve them custom creatives about them neglecting to open your emails and, again, perhaps offer them a coupon to complete the transaction.
4949

50-
![](images/auto-multi_dI5srBtw.png)
50+
![An ad for Toastmates with a frowning face on a piece of toast and a link for a coupon.](images/auto-multi_dI5srBtw.png)
5151

5252
When users do not open an activation email, we can seamlessly add them to a specific retargeting campaign that contains messaging to remind them to activate.
5353

src/guides/how-to-guides/cross-channel-tracking.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,14 @@ _If you're interested in learning about what to track,_ [check out our guide on
1616

1717
Digital marketing consists of owned marketing, earned marketing, and paid marketing.
1818

19-
![](images/x-channel_WyEIhjxB.png)
19+
<!---![Table outlining the different types of marketing and how to track them.](images/x-channel_WyEIhjxB.png)--->
20+
21+
| Type of marketing | How to track |
22+
| ---------------------------------- | ------------------------------------------------------ |
23+
| Owned (domain, app) | First-party data sources (on-page or in-app analytics) |
24+
| Owned (email, push notifications) | Second-party data sources |
25+
| Earned (blogs, PR, partners, news) | UTM params, deep links on mobile |
26+
| Paid aquisition | UTM params, deep links on mobile |
2027

2128
"Owned" marketing encompasses all activities you have full control over. It can be further split into first- and second-party data. First-party data is customer data generated on your site or in your app. Second-party data is customer data generated when your customers interact with your email or push notifications (e.g. "Email Opened", "Push Notification Received").
2229

@@ -81,7 +88,7 @@ Add the complete URL as the `src` in the image tag.
8188

8289
UTM parameters are types of query strings added to the end of a URL. When clicked, they let the domain owners track where incoming traffic is coming from and understand what aspects of their marketing campaigns are driving traffic.
8390

84-
![](images/x-channel_GWqnp2I6.png)
91+
![Diagram showing how different UTM parameters redirect to your site and then are displayed in Traffic analytics.](images/x-channel_GWqnp2I6.png)
8592

8693
UTM parameters are only used when linking to your site from outside of your domain. When a visitor arrives to your site using a link containing UTM parameters, Segment's client-side analytics.js library will automatically parse the URL's query strings, and store them within the `context` object as outlined [here](https://segment.com/docs/connections/spec/common/#context-fields-automatically-collected). These parameters do not persist to subsequent calls unless you pass them explicitly.
8794

@@ -133,7 +140,15 @@ Your UTM parameters would match a pattern such as
133140

134141
An example would be a National Toast Day campaign. This campaign would include emails, paid acquisition (via AdRoll and Facebook Ads), organic social (Twitter), and promotional content on partners' blogs.
135142

136-
![](images/x-channel_Z3KerVHZ.png)
143+
<!---![Table outlining different channels and the UTM parameters you can pass through them.](images/x-channel_Z3KerVHZ.png)--->
144+
145+
| Channel | UTM Campaign | UTM Medium | UTM source |
146+
| -------- | ----------------- | -------------- | ----------- |
147+
| Email | national-toastday | email | customer.io |
148+
| News | national-toastday | news | toastnation |
149+
| AdRoll | national-toastday | display | adroll |
150+
| Facebook | national-toastday | paid-social | facebook |
151+
| Twitter | national-toastday | organic-social | twitter |
137152

138153
Having the consistent UTM parameters naming convention simplifies the downstream analysis and the ease of querying across dimensions, such as within the campaign, which medium or source was the best. Or which placement of the display ad led to the most conversions.
139154

src/guides/how-to-guides/dynamic-coupon-program.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ We'll conduct a split test (half of the cohort will represent the control group
3838

3939
First, register for an account with Customer.io and Amplitude. Then, enable Customer.io and enable Amplitude on your Segment project. Finally, go into your Customer.io account and enable "sending data to Segment":
4040

41-
![](images/dyncoupon_tps7HAgP.png)
41+
![Screenshot of the Streaming Data Out page in Customer.io, with an enabled Segment.com option.](images/dyncoupon_tps7HAgP.png)
4242

4343
[You can find those destination settings in Customer.io here.](https://fly.customer.io/account/integration_settings)
4444

@@ -50,13 +50,13 @@ When everything is enabled, customer event data such as `Order Completed` and `P
5050

5151
Now we define the specific cohort in Customer.io as per our conditions listed earlier: someone who spends over $20 per order and shops over twice a month. In Customer.io, go to "Segments" and "Create Segment":
5252

53-
![](images/dyncoupon_kTaK5L7l.png)
53+
![Screenshot of the Segment builder in Customer.io, with the title "Coupon Loyalty Experiment".](images/dyncoupon_kTaK5L7l.png)
5454

5555
After this cohort is created, then when a customer makes the third purchase in a month and it's over $20, then she will be added to this segment.
5656

5757
Next, we'll create a "segment trigger campaign", where Customer.io will send a message the first time someone enters a segment. The segment in this case will be the one we just created: Coupon Loyalty Experiment.
5858

59-
![](images/dyncoupon_lE6v8cXN.png)
59+
![Screenshot of the Segment Trigger Campaign page in Customer.io, with a sample email ready to send to customers in the segment.](images/dyncoupon_lE6v8cXN.png)
6060

6161
Save the changes and then enable the campaign!
6262

@@ -71,29 +71,29 @@ In Amplitude, we can create a funnel that compares the two cohorts—one who rec
7171

7272
First, let's define a behavioral cohort with the conditions of being loyal customers so we can use it when we analyze the conversion funnel:
7373

74-
![](images/dyncoupon_uiJaB5iF.png)
74+
![Screenshot of a Loyal Customers segment in Amplitude, comprised of users who spent at least $20 and purchased more than two times in the last 30 days](images/dyncoupon_uiJaB5iF.png)
7575

7676
We'll also have to create a second identical cohort, except with the only difference that these customers did not receive the coupon email. We need this cohort so we can create the conversion funnel with the control group.
7777

78-
![](images/dyncoupon_vt165Rxc.png)
78+
![Screenshot of a Loyal Customers (Control) segment in Amplitude, comprised of users who spent at least $20 and purchased more than two times in the last 30 days, but did not get the loyal customer email.](images/dyncoupon_vt165Rxc.png)
7979

8080
After we've created these two cohorts, we'll create two funnel charts. The first funnel will look at the control group. The second funnel will look at the group that received the coupon email.
8181

82-
![](images/dyncoupon_2IEwSA4L.png)
82+
![Screenshot of the Funnel Analysis page in Amplitude showing the Loyal Customers (Control) segment.](images/dyncoupon_2IEwSA4L.png)
8383

8484
Resulting in:
8585

86-
![](images/dyncoupon_kEDuPed8.png)
86+
![A bar chart showing 233 visits to the main landing screen, 98 products added to cart, and 66 purchases.](images/dyncoupon_kEDuPed8.png)
8787

8888
We can see that the control group that did not receive the email for the coupon resulted in 233 people visiting the store, with 66 conversions.
8989

9090
The funnel for the group who did receive the emails can be created with these parameters:
9191

92-
![](images/dyncoupon_AIZxZDJG.png)
92+
![Screenshot of the Funnel Analysis page in Amplitude showing the Loyal Customers segment.](images/dyncoupon_AIZxZDJG.png)
9393

9494
Resulting in:
9595

96-
![](images/dyncoupon_TUWSroDC.png)
96+
![A bar chart showing 758 emails delivered, 560 emails opened, 168 visits to the main landing screen, 134 products added to cart, and 95 purchases.](images/dyncoupon_TUWSroDC.png)
9797

9898
The email itself drove 168 customers to the store, which also saw higher conversions to `Product Added` and ultimately `Order Completed` .
9999

src/guides/how-to-guides/forecast-with-sql.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,13 @@ To retrieve a table with the right columns for analysis, let's use the follow SQ
9191

9292
This returns a table where each row is a unique user and the columns are email, number of purchases within the time window, number of discrete time units since last purchase, and average purchase order.
9393

94-
![](images/forecast_MiUlaNKr.jpg)
94+
![Screenshot of a spreadsheet with columms email, frequency, days_since_last_transaction, days_since_first_transaction, and average_transaction_size.](images/forecast_MiUlaNKr.jpg)
9595

9696
> Here is a screenshot of the first twelve rows returned from the query in Mode Analytics.
9797
9898
Export this data to a CSV, then copy and paste it in the first sheet of the Google Sheet where the blue type is in the below screenshot:
9999

100-
![](images/forecast_JBqlb4Hf.png)
100+
![Screenshot of the Segment Tracking Plan Google Spreadsheet, with 11 user records.](images/forecast_JBqlb4Hf.png)
101101

102102
Also be sure to add the total time in days in cell B6. This is important as the second sheet uses this time duration for calculating net present value of future payments.
103103

@@ -107,7 +107,7 @@ After you paste in the CSV from the table into the first tab of the sheet, the n
107107

108108
You can export your Google Sheet as an Excel document. Then, use Excel Solver to minimize the log-likelihood number in cell B5, while keeping the parameters from B1:B4 greater than 0.0001.
109109

110-
![](images/forecast_GkZFJP5q.png)
110+
![Screenshot of the Solver Parameters popup in Google Sheets, with the cells B1:B4 set greater than or equal to 1 E to the -5.](images/forecast_GkZFJP5q.png)
111111

112112
After Solver runs, cells B1:B4 will be updated to represent the model's estimates. Now, you can hard code those back into the sheet on Google Sheets. The next sheet relies on these model estimates to calculate the expected purchases per customer.
113113

@@ -184,7 +184,7 @@ Below is a simple query to get a table of a user's actions in rows. Just replace
184184

185185
This above query for user whose `user_id` is `"46X8VF96G6"` returns the below table:
186186

187-
![](images/forecast_3N82oB4v.png)
187+
![A table with two columns: event_or_page_viewed and recieved_at.](images/forecast_3N82oB4v.png)
188188

189189
At Toastmates, most of the highest forward-looking expected LTV customers share one thing in common: averaging two orders per month with an average purchase size of $20.
190190

0 commit comments

Comments
 (0)