diff --git a/analytics-node/analytics-node-tests.ts b/analytics-node/analytics-node-tests.ts
new file mode 100644
index 0000000000..66a4b4995e
--- /dev/null
+++ b/analytics-node/analytics-node-tests.ts
@@ -0,0 +1,82 @@
+///
+
+var analytics: AnalyticsNode.Analytics;
+import Analytics = require("analytics-node");
+
+function testConfig(): void {
+ analytics = new Analytics('YOUR_WRITE_KEY', {
+ flushAt: 20,
+ flushAfter: 10000
+ });
+}
+
+function testIdentify(): void {
+ analytics.identify({
+ userId: '019mr8mf4r',
+ traits: {
+ name: 'Michael Bolton',
+ email: 'mbolton@initech.com',
+ plan: 'Enterprise',
+ friends: 42
+ }
+ });
+}
+
+function testTrack(): void {
+ analytics.track({
+ userId: '019mr8mf4r',
+ event: 'Purchased an Item',
+ properties: {
+ revenue: 39.95,
+ shippingMethod: '2-day'
+ }
+ });
+}
+
+function testPage(): void {
+ analytics.page({
+ userId: '019mr8mf4r',
+ category: 'Docs',
+ name: 'Node.js Library',
+ properties: {
+ url: 'https://segment.com/docs/libraries/node',
+ path: '/docs/libraries/node/',
+ title: 'Node.js Library - Segment',
+ referrer: 'https://github.com/segmentio/analytics-node'
+ }
+ });
+}
+
+function testAlias(): void {
+ // the anonymous user does actions ...
+ analytics.track({ userId: 'anonymous_user', event: 'Anonymous Event' })
+ // the anonymous user signs up and is aliased
+ analytics.alias({ previousId: 'anonymous_user', userId: 'identified@gmail.com' })
+ // the identified user is identified
+ analytics.identify({ userId: 'identified@gmail.com', traits: { plan: 'Free' } })
+ // the identified user does actions ...
+ analytics.track({ userId: 'identified@gmail.com', event: 'Identified Action' })
+}
+
+function testGroup(): void {
+ analytics.group({
+ userId: '019mr8mf4r',
+ groupId: '56',
+ traits: {
+ name: 'Initech',
+ description: 'Accounting Software'
+ }
+ });
+}
+
+function testIntegrations(): void {
+ analytics.track({
+ event: 'Upgraded Membershipt',
+ userId: '97234974',
+ integrations: {
+ 'All': false,
+ 'Vero': true,
+ 'Google Analytics': false
+ }
+ });
+}
diff --git a/analytics-node/analytics-node.d.ts b/analytics-node/analytics-node.d.ts
new file mode 100644
index 0000000000..981e754e59
--- /dev/null
+++ b/analytics-node/analytics-node.d.ts
@@ -0,0 +1,73 @@
+// Type definitions for Segment's analytics.js for Node.js
+// Project: https://segment.com/docs/libraries/node/
+// Definitions by: Andrew Fong
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module AnalyticsNode {
+
+ interface Integrations {
+ [index: string]: boolean;
+ }
+
+ export class Analytics {
+ constructor(writeKey: string, opts?: {
+ flushAt?: number,
+ flushAfter?: number
+ });
+
+ /* The identify method lets you tie a user to their actions and record
+ traits about them. */
+ identify(message: {
+ userId: string | number;
+ traits?: Object;
+ timestamp?: Date;
+ context?: Object;
+ integrations?: Integrations;
+ }): Analytics;
+
+ /* The track method lets you record the actions your users perform. */
+ track(message: {
+ userId: string | number;
+ event: string;
+ properties?: Object;
+ timestamp?: Date;
+ context?: Object;
+ integrations?: Integrations;
+ }): Analytics;
+
+ /* The page method lets you record page views on your website, along with
+ optional extra information about the page being viewed. */
+ page(message: {
+ userId: string | number;
+ category?: string;
+ name?: string;
+ properties?: Object;
+ timestamp?: Date;
+ context?: Object;
+ integrations?: Integrations;
+ }): Analytics;
+
+ /* alias is how you associate one identity with another. */
+ alias(message: {
+ previousId: string | number;
+ userId: string | number;
+ integrations?: Integrations;
+ }): Analytics;
+
+ /* Group calls can be used to associate individual users with shared
+ accounts or companies. */
+ group(message: {
+ userId: string | number;
+ groupId: string | number;
+ traits?: Object;
+ context?: Object;
+ timestamp?: Date;
+ anonymous_id?: string | number;
+ integrations?: Integrations;
+ }): Analytics;
+ }
+}
+
+declare module "analytics-node" {
+ export = AnalyticsNode.Analytics;
+}