diff --git a/src/_data/catalog/sources.yml b/src/_data/catalog/sources.yml
index a095f04ade..a1d5a3e90f 100644
--- a/src/_data/catalog/sources.yml
+++ b/src/_data/catalog/sources.yml
@@ -5,7 +5,7 @@ items:
display_name: .NET
isCloudEventSource: false
slug: net
- url: connections/sources/catalog/libraries/server/net
+ url: connections/sources/catalog/libraries/server/csharp
hidden: false
regions:
- us
@@ -2579,7 +2579,7 @@ items:
display_name: Xamarin
isCloudEventSource: false
slug: xamarin
- url: connections/sources/catalog/libraries/mobile/xamarin
+ url: connections/sources/catalog/libraries/server/csharp
hidden: false
regions:
- us
diff --git a/src/connections/sources/catalog/libraries/mobile/android/android-faqs.md b/src/connections/sources/catalog/libraries/mobile/android/android-faqs.md
index 5ae67b2af6..5d0c9daa7e 100644
--- a/src/connections/sources/catalog/libraries/mobile/android/android-faqs.md
+++ b/src/connections/sources/catalog/libraries/mobile/android/android-faqs.md
@@ -1,8 +1,14 @@
---
title: 'Analytics-Android frequently asked questions'
strat: android
+custom_ranking:
+ heading: 0
+ position: 99999
---
+> warning "End-of-Support Announcement for Analytics-Android - March 2026"
+> The end-of-support (EoS) for the Analytics-Android SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-Kotlin](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/) SDK. If you'd like to upgrade to Analytics-Kotlin, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/migration/).
+
## What is the latest version of the library?
Analytics-Android is published to [Maven Central](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.segment.analytics.android%22%20AND%20a%3A%22analytics%22) where you can see all published releases.
diff --git a/src/connections/sources/catalog/libraries/mobile/android/changelog.md b/src/connections/sources/catalog/libraries/mobile/android/changelog.md
index 7a2bc56345..651dd6b48d 100644
--- a/src/connections/sources/catalog/libraries/mobile/android/changelog.md
+++ b/src/connections/sources/catalog/libraries/mobile/android/changelog.md
@@ -2,5 +2,8 @@
title: Analytics-Android Changelog
repo: analytics-android
strat: android
+custom_ranking:
+ heading: 0
+ position: 99999
---
{% include content/changelog.html %}
\ No newline at end of file
diff --git a/src/connections/sources/catalog/libraries/mobile/android/index.md b/src/connections/sources/catalog/libraries/mobile/android/index.md
index 818392abc1..a846fe433b 100644
--- a/src/connections/sources/catalog/libraries/mobile/android/index.md
+++ b/src/connections/sources/catalog/libraries/mobile/android/index.md
@@ -2,16 +2,19 @@
title: 'Analytics-Android'
strat: android
repo: analytics-android
-support_type: maintenance
+support_type: community
id: wXNairW5xX
+custom_ranking:
+ heading: 0
+ position: 99999
---
Analytics-Android makes it easier for you to send data to any tool without having to learn, test or implement a new API every time.
Analytics-Android only supports any Android device running API 14 (Android 4.0) and higher. This includes Amazon Fire devices.
-> info "Analytics-Kotlin"
-> The Analytics-Kotlin library is in General Availability. You can use Analytics-Kotlin for [mobile](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/) or [server](/docs/connections/sources/catalog/libraries/server/kotlin) applications. If you'd like to upgrade to Analytics-Kotlin, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/migration/). Segment's future development efforts concentrate on the new Analytics-Kotlin SDK, and will only ship security updates for the Analytics-Android SDK.
+> warning "End-of-Support Announcement for Analytics-Android - March 2026"
+> The end-of-support (EoS) for the Analytics-Android SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-Kotlin](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/) SDK. If you'd like to upgrade to Analytics-Kotlin, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/migration/).
> success ""
> In addition to the documentation here, you can also [read the Javadocs for all versions of Analytics-Android on Javadoc.io](https://javadoc.io/doc/com.segment.analytics.android/analytics/latest/index.html).
diff --git a/src/connections/sources/catalog/libraries/mobile/android/middleware.md b/src/connections/sources/catalog/libraries/mobile/android/middleware.md
index a336962f35..0129dfba85 100644
--- a/src/connections/sources/catalog/libraries/mobile/android/middleware.md
+++ b/src/connections/sources/catalog/libraries/mobile/android/middleware.md
@@ -1,8 +1,14 @@
---
title: 'Middleware for Analytics-Android'
strat: android
+custom_ranking:
+ heading: 0
+ position: 99999
---
+> warning "End-of-Support Announcement for Analytics-Android - March 2026"
+> The end-of-support (EoS) for the Analytics-Android SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-Kotlin](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/) SDK. If you'd like to upgrade to Analytics-Kotlin, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/migration/).
+
Middlewares are a powerful mechanism that can augment the events collected by the SDK. A middleware is a simple function that is invoked by the Segment SDK and can be used to monitor, modify, augment or reject events. Source Middleware are available on analytics-android 4.3.0 and later. Destination Middleware are available on analytics-android 4.7.0 and later.
You can register source middleware during construction with the `.useSourceMiddleware` method on the builder. These middleware are invoked for all events, including automatically tracked events, and external event sources like Adjust and Optimizely.
diff --git a/src/connections/sources/catalog/libraries/mobile/android/quickstart.md b/src/connections/sources/catalog/libraries/mobile/android/quickstart.md
index f26b9eccbc..b49945ce6e 100644
--- a/src/connections/sources/catalog/libraries/mobile/android/quickstart.md
+++ b/src/connections/sources/catalog/libraries/mobile/android/quickstart.md
@@ -2,8 +2,14 @@
title: 'Quickstart: Analytics-Android'
hidden: true
strat: android
+custom_ranking:
+ heading: 0
+ position: 99999
---
+> warning "End-of-Support Announcement for Analytics-Android - March 2026"
+> The end-of-support (EoS) for the Analytics-Android SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-Kotlin](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/) SDK. If you'd like to upgrade to Analytics-Kotlin, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/migration/).
+
[](https://maven-badges.herokuapp.com/maven-central/com.segment.analytics.android/analytics)
This tutorial will help you start sending analytics data from your Android app to Segment and any of our destinations, using our Android library. As soon as you're set up you'll be able to turn on any new destinations with the flip of a switch!
diff --git a/src/connections/sources/catalog/libraries/mobile/android/troubleshooting.md b/src/connections/sources/catalog/libraries/mobile/android/troubleshooting.md
index b7d4d3b611..55bb6623bf 100644
--- a/src/connections/sources/catalog/libraries/mobile/android/troubleshooting.md
+++ b/src/connections/sources/catalog/libraries/mobile/android/troubleshooting.md
@@ -1,8 +1,14 @@
---
title: 'Troubleshooting Analytics-Android'
strat: android
+custom_ranking:
+ heading: 0
+ position: 99999
---
+> warning "End-of-Support Announcement for Analytics-Android - March 2026"
+> The end-of-support (EoS) for the Analytics-Android SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-Kotlin](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/) SDK. If you'd like to upgrade to Analytics-Kotlin, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/migration/).
+
## No events in my debugger
1. Check that you followed all of the [Getting Started](/docs/connections/sources/catalog/libraries/mobile/android/#getting-started) steps correctly
diff --git a/src/connections/sources/catalog/libraries/mobile/android/wear.md b/src/connections/sources/catalog/libraries/mobile/android/wear.md
index 4e8727560d..04cfdceaf3 100644
--- a/src/connections/sources/catalog/libraries/mobile/android/wear.md
+++ b/src/connections/sources/catalog/libraries/mobile/android/wear.md
@@ -2,8 +2,14 @@
title: 'Analytics-Android Wear'
strat: android
hidden: true
+custom_ranking:
+ heading: 0
+ position: 99999
---
+> warning "End-of-Support Announcement for Analytics-Android - March 2026"
+> The end-of-support (EoS) for the Analytics-Android SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-Kotlin](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/) SDK. If you'd like to upgrade to Analytics-Kotlin, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/migration/).
+
Analytics-Android Wear makes it simple to send your data to any tool without having to learn, test, or implement a new API every time.
All of Segment's client libraries are open-source, so you can [view Analytics-Android on GitHub](https://github.com/segmentio/analytics-android), or check out our [browser and server-side libraries](/docs/connections/sources/catalog/) too.
diff --git a/src/connections/sources/catalog/libraries/mobile/ios/changelog.md b/src/connections/sources/catalog/libraries/mobile/ios/changelog.md
index e364e2df7a..85a8312245 100644
--- a/src/connections/sources/catalog/libraries/mobile/ios/changelog.md
+++ b/src/connections/sources/catalog/libraries/mobile/ios/changelog.md
@@ -2,5 +2,8 @@
title: Analytics-iOS Changelog
repo: analytics-ios
strat: ios
+custom_ranking:
+ heading: 0
+ position: 99999
---
{% include content/changelog.html %}
\ No newline at end of file
diff --git a/src/connections/sources/catalog/libraries/mobile/ios/index.md b/src/connections/sources/catalog/libraries/mobile/ios/index.md
index 2d224e2cb4..ede8a45f84 100644
--- a/src/connections/sources/catalog/libraries/mobile/ios/index.md
+++ b/src/connections/sources/catalog/libraries/mobile/ios/index.md
@@ -2,21 +2,24 @@
title: Analytics-iOS
strat: ios
repo: analytics-ios
-support_type: maintenance
+support_type: community
id: UBrsG9RVzw
+custom_ranking:
+ heading: 0
+ position: 99999
---
With Analytics-iOS, you can send your data to analytics or marketing tool, without needing to learn, test, or implement a new API with each update or addition.
+> warning "End-of-Support Announcement for Analytics-iOS - March 2026"
+> The end-of-support (EoS) for the Analytics-iOS SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-Swift](/docs/connections/sources/catalog/libraries/mobile/swift/){:target="_blank”} SDK. If you'd like to migrate to Analytics-Swift, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/swift/migration/){:target="_blank”}.
+
> info "Watchkit extensions currently unsupported"
> Segment does not currently support tracking of watchkit extensions for the Apple Watch. [Email Segment](https://segment.com/requests/integrations/){:target="_blank”}. if you're interested in a Watchkit SDK. For now Segment recommends tracking watch interactions using the iPhone app code.
-> info "Analytics-Swift"
-> The [Analytics-Swift](/docs/connections/sources/catalog/libraries/mobile/swift/){:target="_blank”}. library is in General Availability. If you'd like to migrate to Analytics-Swift, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/swift/migration/){:target="_blank”}.. Segment's future development efforts concentrate on the new Analytics-Kotlin SDK, and will only ship security updates for the Analytics-Android SDK.
-
## Analytics-iOS and Unique Identifiers
One of the most important parts of any analytics platform is the ability to consistently and accurately identify users. To do this, the platform must assign and persist some form of identification on the device, so you can analyze user actions effectively. This is especially important for funnel conversion analysis and retention analysis.
diff --git a/src/connections/sources/catalog/libraries/mobile/ios/ios-faqs.md b/src/connections/sources/catalog/libraries/mobile/ios/ios-faqs.md
index 3edf802f60..ca8ae58b19 100644
--- a/src/connections/sources/catalog/libraries/mobile/ios/ios-faqs.md
+++ b/src/connections/sources/catalog/libraries/mobile/ios/ios-faqs.md
@@ -1,8 +1,14 @@
---
title: Analytics-iOS Frequently asked questions
strat: ios
+custom_ranking:
+ heading: 0
+ position: 99999
---
+> warning "End-of-Support Announcement for Analytics-iOS - March 2026"
+> The end-of-support (EoS) for the Analytics-iOS SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-Swift](/docs/connections/sources/catalog/libraries/mobile/swift/){:target="_blank”} SDK. If you'd like to migrate to Analytics-Swift, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/swift/migration/){:target="_blank”}.
+
## How big is the Segment SDK?
The core Segment SDK is extremely lightweight. It weighs in at about 212KB.
diff --git a/src/connections/sources/catalog/libraries/mobile/ios/ios14-guide.md b/src/connections/sources/catalog/libraries/mobile/ios/ios14-guide.md
index 78ce64d22a..76d5e712fe 100644
--- a/src/connections/sources/catalog/libraries/mobile/ios/ios14-guide.md
+++ b/src/connections/sources/catalog/libraries/mobile/ios/ios14-guide.md
@@ -1,8 +1,14 @@
---
title: iOS 14 Guide
strat: ios
+custom_ranking:
+ heading: 0
+ position: 99999
---
+> warning "End-of-Support Announcement for Analytics-iOS - March 2026"
+> The end-of-support (EoS) for the Analytics-iOS SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-Swift](/docs/connections/sources/catalog/libraries/mobile/swift/){:target="_blank”} SDK. If you'd like to migrate to Analytics-Swift, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/swift/migration/){:target="_blank”}.
+
> warning ""
> You should update your `analytics-ios` and device-mode destinations to adapt to iOS 14 changes explained in this guide. For information about iOS 14.5, see [What's new in iOS 14.5](#whats-new-with-ios-145) below.
diff --git a/src/connections/sources/catalog/libraries/mobile/ios/middleware.md b/src/connections/sources/catalog/libraries/mobile/ios/middleware.md
index 7afe275a69..f7444748e6 100644
--- a/src/connections/sources/catalog/libraries/mobile/ios/middleware.md
+++ b/src/connections/sources/catalog/libraries/mobile/ios/middleware.md
@@ -1,8 +1,14 @@
---
title: Middleware for iOS
strat: ios
+custom_ranking:
+ heading: 0
+ position: 99999
---
+> warning "End-of-Support Announcement for Analytics-iOS - March 2026"
+> The end-of-support (EoS) for the Analytics-iOS SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-Swift](/docs/connections/sources/catalog/libraries/mobile/swift/){:target="_blank”} SDK. If you'd like to migrate to Analytics-Swift, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/swift/migration/){:target="_blank”}.
+
Middlewares are simple functions invoked by the Segment libraries, which give you a way to add information to the events you collect using the Segment SDKs. They can be used to monitor, modify, or reject events. Source Middlewares are available on `analytics-ios` 3.6.0 and later.
You can access the middleware API in both Objective-C and Swift.
diff --git a/src/connections/sources/catalog/libraries/mobile/ios/quickstart.md b/src/connections/sources/catalog/libraries/mobile/ios/quickstart.md
index 6ff95a8a3f..37352f6005 100644
--- a/src/connections/sources/catalog/libraries/mobile/ios/quickstart.md
+++ b/src/connections/sources/catalog/libraries/mobile/ios/quickstart.md
@@ -2,8 +2,14 @@
title: 'Quickstart: iOS'
hidden: true
strat: ios
+custom_ranking:
+ heading: 0
+ position: 99999
---
+> warning "End-of-Support Announcement for Analytics-iOS - March 2026"
+> The end-of-support (EoS) for the Analytics-iOS SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-Swift](/docs/connections/sources/catalog/libraries/mobile/swift/){:target="_blank”} SDK. If you'd like to migrate to Analytics-Swift, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/swift/migration/){:target="_blank”}.
+
This tutorial gets you started sending data from your iOS app to Segment. When you're done you can turn on [any of Segment's destinations](/docs/connections/destinations/) with the flip of a switch! No more waiting for App Store approval.
If you want to dive deeper at any point, check out the [iOS Library Reference](/docs/connections/sources/catalog/libraries/mobile/ios/).
diff --git a/src/connections/sources/catalog/libraries/mobile/ios/troubleshooting.md b/src/connections/sources/catalog/libraries/mobile/ios/troubleshooting.md
index 4f51dd8f55..d2ec889e3c 100644
--- a/src/connections/sources/catalog/libraries/mobile/ios/troubleshooting.md
+++ b/src/connections/sources/catalog/libraries/mobile/ios/troubleshooting.md
@@ -1,8 +1,14 @@
---
title: Troubleshooting Analytics-iOS
strat: ios
+custom_ranking:
+ heading: 0
+ position: 99999
---
+> warning "End-of-Support Announcement for Analytics-iOS - March 2026"
+> The end-of-support (EoS) for the Analytics-iOS SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-Swift](/docs/connections/sources/catalog/libraries/mobile/swift/){:target="_blank”} SDK. If you'd like to migrate to Analytics-Swift, see the [migration guide](/docs/connections/sources/catalog/libraries/mobile/swift/migration/){:target="_blank”}.
+
## Target has transitive dependencies that include static binaries
This was due to an old [CocoaPods limitation](https://github.com/CocoaPods/CocoaPods/issues/2926).
diff --git a/src/connections/sources/catalog/libraries/mobile/react-native/index.md b/src/connections/sources/catalog/libraries/mobile/react-native/index.md
index c0a0ce9a87..ca02058ea6 100644
--- a/src/connections/sources/catalog/libraries/mobile/react-native/index.md
+++ b/src/connections/sources/catalog/libraries/mobile/react-native/index.md
@@ -88,7 +88,7 @@ These are the options you can apply to configure the client:
| `storePersistor` | undefined | A custom persistor for the store that `analytics-react-native` uses. Must match [`Persistor`](https://github.com/segmentio/analytics-react-native/blob/master/packages/sovran/src/persistor/persistor.ts#L1-L18) interface exported from [sovran-react-native](https://github.com/segmentio/analytics-react-native/blob/master/packages/sovran). |
| `proxy` | undefined | `proxy` is a batch url to post to instead of 'https://api.segment.io/v1/b'. |
| `errorHandler` | undefined | Create custom actions when errors happen, see [Handling errors](#handling-errors) |
-
+| `useSegmentEndpoints` | false | Set to `true` to automatically append the Segment endpoints when using `proxy` or `cdnProxy` to send or fetch settings. Otherwise, `proxy` or `cdnProxy` will be used as is |
## Adding Plugins to the Client
diff --git a/src/connections/sources/catalog/libraries/mobile/xamarin/index.md b/src/connections/sources/catalog/libraries/mobile/xamarin/index.md
index 92137a2088..7aa183ec61 100644
--- a/src/connections/sources/catalog/libraries/mobile/xamarin/index.md
+++ b/src/connections/sources/catalog/libraries/mobile/xamarin/index.md
@@ -4,7 +4,14 @@ sourceTitle: 'Xamarin'
sourceCategory: 'Mobile'
id: wcssVcPJrc
support_type: community
+custom_ranking:
+ heading: 0
+ position: 99999
---
+
+> warning "End-of-Support Announcement for Analytics.Xamarin - March 2026"
+> The end-of-support (EoS) for the Analytics.Xamarin SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-CSharp](/docs/connections/sources/catalog/libraries/server/csharp/) SDK. If you'd like to migrate to Analytics-CSharp, see the [migration guide](/docs/connections/sources/catalog/libraries/server/csharp/migration-guide/).
+
Segment's [Xamarin](http://xamarin.com/) Portable Class Library ([PCL](http://developer.xamarin.com/guides/cross-platform/application_fundamentals/pcl/)) is the best way to integrate analytics into your Xamarin application. It lets you record analytics data from your C#, F#, and .NET code, and supports `PCL Profile 4.0 - Profile136`, which targets the following platforms:
- .NET Framework 4 or later
@@ -20,9 +27,6 @@ The library issues requests that hit our servers, and then we route your data to
**Note:** Since Xamarin requires Segment's library to be portable to different builds, Segment can only enable server-side destinations, as opposed to bundling select native SDKs like we do for iOS and Android. Look for the "Server" icon when selecting destinations. For tools for which we offer both bundled and server-side destinations, like Mixpanel, Amplitude, and Google Analytics, Segment's Xamarin library will only be able to use their server-side functionality.
-> info "Analytics-CSharp (C#)"
-> With [Analytics-CSharp](/docs/connections/sources/catalog/libraries/server/csharp/), you can add Segment analytics to your C# based app which includes Xamarin. If you'd like to migrate to use Analytics-CSharp, see the [Analytics-CSharp migration guide](/docs/connections/sources/catalog/libraries/server/csharp/migration-guide/).
-
## Getting Started
Clone `Analytics.Xamarin` from [GitHub](https://github.com/segmentio/Analytics.Xamarin)...
diff --git a/src/connections/sources/catalog/libraries/server/csharp/index.md b/src/connections/sources/catalog/libraries/server/csharp/index.md
index 493245910a..31814fe35e 100644
--- a/src/connections/sources/catalog/libraries/server/csharp/index.md
+++ b/src/connections/sources/catalog/libraries/server/csharp/index.md
@@ -2,6 +2,14 @@
title: Analytics-CSharp (C#)
strat: csharp
support_type: flagship
+tags:
+ - C#
+ - C-sharp
+ - .NET
+ - NET
+ - Xamarin
+ - Unity
+ - ASP.NET
id:
redirect_from:
- '/connections/sources/catalog/libraries/mobile/unity'
@@ -72,6 +80,7 @@ To get started with the Analytics-CSharp library:
| `storageProvider` | The default is set to `DefaultStorageProvider`.
This sets how you want your data to be stored. `DefaultStorageProvider` is used by default which stores data to local storage. `InMemoryStorageProvider` is also provided in the library. You can also write your own storage solution by implementing `IStorageProvider` and `IStorage`. |
| `httpClientProvider` | The default is set to `DefaultHTTPClientProvider`.
This sets a http client provider for analytics use to do network activities. The default provider uses System.Net.Http for network activities. |
| `flushPolicies` | The default is set to `null`.
This sets custom flush policies to tell analytics when and how to flush. By default, it converts `flushAt` and `flushInterval` to `CountFlushPolicy` and `FrequencyFlushPolicy`. If a value is given, it overwrites `flushAt` and `flushInterval`. |
+| `eventPipelineProvider` | The default is `EventPipelineProvider`.
This sets a custom event pipeline to define how Analytics handles events. The default `EventPipelineProvider` processes events asynchronously. Use `SyncEventPipelineProvider` to make manual flush operations synchronous. |
## Tracking Methods
@@ -329,6 +338,21 @@ The `reset` method clears the SDK’s internal stores for the current user and g
analytics.Reset()
```
+## Enrichment Closure
+To modify the properties of an event, you can either write an enrichment plugin that applies changes to all events or pass an enrichment closure to the analytics call to apply changes to a specific event.
+
+```c#
+ analytics.Track("MyEvent", properties, @event =>
+ {
+ if (@event is TrackEvent trackEvent)
+ {
+ // update properties of this event
+ trackEvent.UserId = "foo";
+ }
+
+ return @event;
+ });
+```
## Flush policies
To more granularly control when events are uploaded you can use `FlushPolicies`.
@@ -378,7 +402,7 @@ For example, you might want to disable flushes if you detect the user has no net
### Create your own flush policies
-You can create a custom FlushPolicy special for your application needs by implementing the `IFlushPolicy` interface. You can also extend the `FlushPolicyBase` class that already creates and handles the `shouldFlush` value reset.
+You can create a custom FlushPolicy special for your application needs by implementing the `IFlushPolicy` interface. You can also extend the `IFlushPolicy` class that already creates and handles the `shouldFlush` value reset.
A `FlushPolicy` only needs to implement two of these methods:
- `Schedule`: Executed when the flush policy is enabled and added to the client. This is a good place to start background operations, make async calls, configure things before execution
diff --git a/src/connections/sources/catalog/libraries/server/csharp/migration-guide.md b/src/connections/sources/catalog/libraries/server/csharp/migration-guide.md
index c0ec9d2887..048c7cc0f9 100644
--- a/src/connections/sources/catalog/libraries/server/csharp/migration-guide.md
+++ b/src/connections/sources/catalog/libraries/server/csharp/migration-guide.md
@@ -49,7 +49,16 @@ You can update to Analytics-CSharp in 3 steps:
using Segment.Analytics.Compat;
```
-3. *(Optional)* Update calls that resets the anonymous ID.
+3. **Required** for .NET, add `UserIdPlugin` to Analytics
+
+ Analytics-CSharp, by default, attaches an internal state `userId` to each event. The `UserIdPlugin`, instead, attaches the `userId` provided in analytics calls directly to the event.
+
+
After:
+ ```c#
+ analytics.Add(new UserIdPlugin());
+ ```
+
+4. *(Optional)* Update calls that resets the anonymous ID.
The old SDK requires you to provide the anonymous ID. The new SDK generates an Anonymous ID for you if you never call `analytics.Identify`. If you call `Identify` and want to go back to anonymous, the new SDK provides a `Reset` function to achieve that.
@@ -76,6 +85,104 @@ Change your development settings if you would like to make analytics run synchro
After:
```c#
var configuration = new Configuration("YOUR WRITE KEY",
- useSynchronizeDispatcher: true);
+ useSynchronizeDispatcher: true,
+ // provide a defaultSettings in case the SDK failed to fetch settings in test environment
+ defaultSettings: new Settings
+ {
+ Integrations = new JsonObject
+ {
+ ["Segment.io"] = new JsonObject
+ {
+ ["apiKey"] = "YOUR WRITE KEY"
+ }
+ }
+ }
+ );
var analytics = new Analytics(configuration);
```
+
+## FAQs
+
+### Should I make Analytics a singleton or scoped in .NET?
+
+The SDK supports both, but be aware of the implications of choosing one over the other:
+
+| Feature | Singleton | Scoped |
+|--|--|--|
+| **Fetch Settings** | Settings are fetched only once at application startup. | Settings are fetched on every request. |
+| **Flush** | Supports both async and sync flush. | Requires sync flush. Should flush per event or on page redirect/close to avoid data loss. |
+| **Internal State** | The internal state (`userId`, `anonId`, etc.) is shared across sessions and cannot be used. (*This is an overhead we are working to minimize*.) | The internal state is safe to use since a new instance is created per request. |
+| **UserId for Events** | Requires adding `UserIdPlugin` and calling analytics APIs with `userId` to associate the correct `userId` with events. | No need for `UserIdPlugin` or passing `userId` in API calls. Instead, call `analytics.Identify()` to update the internal state with the `userId`. Successive events are auto-stamped with that `userId`. |
+| **Storage** | Supports both local storage and in-memory storage. | Requires in-memory storage. (*Support for local storage is in progress*.) |
+
+
+In a nutshell, to register Analytics as singleton:
+
+```c#
+var configuration = new Configuration(
+ writeKey: "YOUR_WRITE_KEY",
+ // Use in-memory storage to keep the SDK stateless.
+ // The default storage also works if you want to persist events.
+ storageProvider: new InMemoryStorageProvider(),
+ // Use a synchronous pipeline to make manual flush operations synchronized.
+ eventPipelineProvider: new SyncEventPipelineProvider()
+);
+
+var analytics = new Analytics(configuration);
+
+// Add UserIdPlugin to associate events with the provided userId.
+analytics.Add(new UserIdPlugin());
+
+// Call analytics APIs with a userId. The UserIdPlugin will update the event with the provided userId.
+analytics.Track("user123", "foo", properties);
+
+// This is a blocking call due to SyncEventPipelineProvider.
+// Use the default EventPipelineProvider for asynchronous flush.
+analytics.Flush();
+
+// Register Analytics as a singleton.
+```
+
+To register Analytics as scoped:
+
+```c#
+var configuration = new Configuration(
+ writeKey: "YOUR_WRITE_KEY",
+ // Requires in-memory storage.
+ storageProvider: new InMemoryStorageProvider(),
+ // Flush per event to prevent data loss in case of a page close.
+ // Alternatively, manually flush on page close.
+ flushAt: 1,
+ // Requires a synchronous flush.
+ eventPipelineProvider: new SyncEventPipelineProvider()
+);
+
+var analytics = new Analytics(configuration);
+
+// Update the internal state with a userId.
+analytics.Identify("user123");
+
+// Subsequent events are auto-stamped with the userId from the internal state.
+analytics.Track("foo", properties);
+
+// This is a blocking call due to SyncEventPipelineProvider.
+analytics.Flush();
+
+// Register Analytics as scoped.
+```
+
+### Which JSON library does this SDK use?
+
+The SDK supports `.netstandard 1.3` and `.netstandard 2.0` and automatically selects the internal JSON library based on the target framework:
+
+* In `.netstandard 1.3`, the SDK uses `Newtonsoft Json.NET`
+* In `.netstandard 2.0`, the SDK uses `System.Text.Json`
+
+Be ware that both Analytics.NET and Analytics.Xamarin use `Newtonsoft Json.NET`. If you encounter issues where JSON dictionary values are turned into empty arrays, it is likely that:
+
+1. You are targeting `.netstandard 2.0`.
+2. Your properties use`Newtonsoft Json.NET` objects or arrays.
+
+To resolve this, you can:
+* Option 1: Target `.netstandard 1.3`
+* Option 2: Upgrade your JSON library to `System.Text.Json`
\ No newline at end of file
diff --git a/src/connections/sources/catalog/libraries/server/net/index.md b/src/connections/sources/catalog/libraries/server/net/index.md
index bead3e9e5a..9b57edcbbb 100644
--- a/src/connections/sources/catalog/libraries/server/net/index.md
+++ b/src/connections/sources/catalog/libraries/server/net/index.md
@@ -3,17 +3,18 @@ title: Analytics for .NET
repo: analytics.NET
id: 8HWbgPTt3k
support_type: community
-tags:
- - C#
- - C-sharp
+custom_ranking:
+ heading: 0
+ position: 99999
---
+
+> warning "End-of-Support Announcement for Analytics.NET - March 2026"
+> The end-of-support (EoS) for the Analytics.NET SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-CSharp](/docs/connections/sources/catalog/libraries/server/csharp/) SDK. If you'd like to migrate to Analytics-CSharp, see the [migration guide](/docs/connections/sources/catalog/libraries/server/csharp/migration-guide/).
+
Segment's .NET library is the best way to integrate analytics into your .NET application or website. It lets you record analytics data from your ASP.NET, C#, F#, and Visual Basic code. The library issues requests that hit Segment's servers, and then Segment routes your data to any analytics service you enable on our destinations page. This library is open-source, so you can [check it out on GitHub](https://github.com/segmentio/Analytics.NET).
All of Segment's server-side libraries are built for high-performance, so you can use them in your web server controller code. This library uses an internal queue to make Identify and Track calls non-blocking and fast. It also batches messages and flushes asynchronously to Segment's servers.
-> info "Analytics-CSharp (C#)"
-> With [Analytics-CSharp](/docs/connections/sources/catalog/libraries/server/csharp/), you can add Segment analytics to your C# based app which includes .NET. If you'd like to migrate to use Analytics-CSharp, see the [Analytics-CSharp migration guide](/docs/connections/sources/catalog/libraries/server/csharp/migration-guide/).
-
## Getting Started
### Client-side vs Server-side
diff --git a/src/connections/sources/catalog/libraries/server/net/quickstart.md b/src/connections/sources/catalog/libraries/server/net/quickstart.md
index b90cc059c2..4fbf6f4c1b 100644
--- a/src/connections/sources/catalog/libraries/server/net/quickstart.md
+++ b/src/connections/sources/catalog/libraries/server/net/quickstart.md
@@ -1,7 +1,13 @@
---
title: 'Quickstart: ASP.NET'
+custom_ranking:
+ heading: 0
+ position: 99999
---
+> warning "End-of-Support Announcement for Analytics.NET - March 2026"
+> The end-of-support (EoS) for the Analytics.NET SDK is scheduled for March 2026. Segment's future development efforts concentrate on the new [Analytics-CSharp](/docs/connections/sources/catalog/libraries/server/csharp/) SDK. If you'd like to migrate to Analytics-CSharp, see the [migration guide](/docs/connections/sources/catalog/libraries/server/csharp/migration-guide/).
+
This tutorial will help you start sending analytics data from your ASP.NET app to Segment and any of our destinations, using our .NET and Analytics.js library. As soon as you're set up you'll be able to turn on analytics tools, ad conversion pixels, email tools and lots of other destinations with the flip of a switch!
If you want to dive deeper at any point, check out the [.NET library reference](/docs/connections/sources/catalog/libraries/server/net).
diff --git a/src/connections/sources/index.md b/src/connections/sources/index.md
index 9e461d4da3..e49f710b92 100644
--- a/src/connections/sources/index.md
+++ b/src/connections/sources/index.md
@@ -123,13 +123,11 @@ Each of these tabs displays an event count, which is the total number of events
Segment's Mobile SDKs are the best way to simplify your iOS, Android, and Xamarin app tracking. Try them over server-side sources as the default installation for any mobile app.
- [AMP](/docs/connections/sources/catalog/libraries/mobile/amp)
-- [Android](/docs/connections/sources/catalog/libraries/mobile/android)
-- [Android Wear](/docs/connections/sources/catalog/libraries/mobile/android/wear)
-- [iOS](/docs/connections/sources/catalog/libraries/mobile/ios)
-- [Kotlin](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/)
+- [Android (Kotlin)](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/)
- [React Native](/docs/connections/sources/catalog/libraries/mobile/react-native)
-- [Swift](/docs/connections/sources/catalog/libraries/mobile/swift/)
-- [Xamarin](/docs/connections/sources/catalog/libraries/mobile/xamarin)
+- [iOS (Swift)](/docs/connections/sources/catalog/libraries/mobile/swift/)
+- [Xamarin](/docs/connections/sources/catalog/libraries/server/csharp)
+- [Unity](/docs/connections/sources/catalog/libraries/server/csharp/)
> info "Analytics-Flutter library"
> The Analytics-Flutter library is currently only available in pilot phase and is governed by Segment's [First Access and Beta Preview Terms](https://www.twilio.com/en-us/legal/tos){:target="_blank"}. If you'd like to try out this library, access the [Analytics-Flutter GitHub repository](https://github.com/segmentio/analytics_flutter){:target="_blank"}.
@@ -146,7 +144,7 @@ Segment's server-side sources let you send analytics data directly from your ser
- [PHP](/docs/connections/sources/catalog/libraries/server/php/)
- [Python](/docs/connections/sources/catalog/libraries/server/python/)
- [Ruby](/docs/connections/sources/catalog/libraries/server/ruby/)
-- [.NET](/docs/connections/sources/catalog/libraries/server/net/)
+- [.NET](/docs/connections/sources/catalog/libraries/server/csharp/)
> info "Cloud-mode tracking"
> Server-side data management is when tag sends data to the Segment servers, which then passes that data to the destination system.