# Newsletter Subscription

> Newsletter subscription with email, name, source, and subscription date.

- Name: `newsletter-subscription`
- Categories: forms
- Detail page: https://open-types.dev/types/newsletter-subscription

## Install

```bash
# Types only
npx shadcn add @open-types/newsletter-subscription

# Types + Zod v4 validators
npx shadcn add @open-types/newsletter-subscription-zod

# Types + real-world examples
npx shadcn add @open-types/newsletter-subscription-examples
```

## Types

```typescript
export interface NewsletterSubscription {
  email: string;
  name?: string;
  source?: string;
  subscribed_at?: string;
}
```

## Zod validator

```typescript
import * as z from "zod";
import type { NewsletterSubscription } from "../types/newsletter-subscription";

export const newsletterSubscriptionSchema = z.object({
  email: z.string().email({ error: "Email must be a valid email address" }),
  name: z.string().optional(),
  source: z.string().optional(),
  subscribed_at: z.string().optional(),
}) satisfies z.ZodType<NewsletterSubscription>;

export type { NewsletterSubscription } from "../types/newsletter-subscription";
```

## Examples

```typescript
// Source: hand-crafted
import type { NewsletterSubscription } from "../types/newsletter-subscription";

export const newsletterSubscriptionExamples = {
  full: {
    email: "jenny@example.com",
    name: "Jenny Rosen",
    source: "homepage-footer",
    subscribed_at: "2026-05-16T18:30:00Z",
  } satisfies NewsletterSubscription,
  minimal: { email: "lead@example.com" } satisfies NewsletterSubscription,
  fromBlogPost: {
    email: "reader@example.com",
    source: "blog/why-opentypes",
    subscribed_at: "2026-05-16T18:30:00Z",
  } satisfies NewsletterSubscription,
  withName: {
    email: "alex@example.com",
    name: "Alex Patel",
  } satisfies NewsletterSubscription,
} as const;
```
