From b22359bdc609f57e9e93a4f897fe90d5290b0f15 Mon Sep 17 00:00:00 2001 From: Sam Nixon Date: Tue, 1 Oct 2024 19:52:42 +0200 Subject: [PATCH] Add new Segment analytics plugin --- .../logos/twilio-segment/twilio-segment.png | Bin 0 -> 7192 bytes .../plugins/twilio-segment-analytics.md | 88 ++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 content/assets/logos/twilio-segment/twilio-segment.png create mode 100644 content/backstage/plugins/twilio-segment-analytics.md diff --git a/content/assets/logos/twilio-segment/twilio-segment.png b/content/assets/logos/twilio-segment/twilio-segment.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd4922d33b09c3619b7d39d0fe267cc165d1f4e GIT binary patch literal 7192 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 aeE5H73^$C{GuV&-0000 + SegmentAnalytics.fromConfig(configApi, { + identityApi, + }), + }), + ]; + + - intro: Optionally configure user anonymization (by default, this analytics plugin identifies the user taking actions as the logged in Backstage User's entity reference string) + language: typescript + code: | + // packages/app/src/apis.ts + import { + analyticsApiRef, + configApiRef, + identityApiRef, + } from '@backstage/core-plugin-api'; + import { SegmentAnalytics } from '@segment/backstage-plugin-analytics-module-segment'; + + export const apis: AnyApiFactory[] = [ + // Instantiate and register the SegmentAnalytics API Implementation. + createApiFactory({ + api: analyticsApiRef, + deps: { configApi: configApiRef, identityApi: identityApiRef }, + factory: ({ configApi, identityApi }) => + SegmentAnalytics.fromConfig(configApi, { + identityApi, + userIdTransform: 'sha-256', + }), + }), + ]; + + - intro: Configure the plugin + language: yaml + code: | + // app-config.yaml + app: + analytics: + segment: + writeKey: abcABCfooBARtestKEY +--- + +### Things to know + +- This plugin requires an active workspace with [Segment](https://segment.com/). +- This plugin uses [Analytics.js Source](https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/). +- You'll need a [Segment Write Key](https://segment.com/docs/connections/find-writekey/) to use this plugin. +- + +### Useful links + +- [npm]() +- [GitHub](https://github.com/segmentio/segment-backstage-plugins/tree/main/plugins/analytics-module-segment)