Sendgo ships **20 official packages**. The rule is short:

1. If there is a package for your framework, use it — the configuration and DI wiring are already done.
2. Otherwise use the core package for your language.
3. From the browser or a mobile app, **do not call Sendgo directly** — go through your own server.

## Server core SDKs

Framework-agnostic clients. They work anywhere.

| Language | Package | Install | Guide |
| --- | --- | --- | --- |
| PHP | `sendgo/php` | `composer require sendgo/php` | [PHP](/en/sdk/php) |
| Node.js / TypeScript | `@sendgo/node` | `npm install @sendgo/node` | [Node.js](/en/sdk/node) |
| Python | `sendgo-python` | `pip install sendgo-python` | [Python](/en/sdk/python) |
| Go | `github.com/send-go/go` | `go get github.com/send-go/go` | [Go](/en/sdk/go) |
| Java | `io.sendgo:sendgo-java` | Maven Central | [Java](/en/sdk/java) |
| Ruby | `sendgo` | `gem install sendgo` | [Ruby](/en/sdk/ruby) |
| C# / .NET | `Sendgo.SDK` | `dotnet add package Sendgo.SDK` | [.NET](/en/sdk/dotnet) |

## Framework extensions

A core package plus configuration, service registration and dependency injection. **The core comes with it.**

| Framework | Package | Built on | What you get |
| --- | --- | --- | --- |
| Laravel | `sendgo/laravel` | `sendgo/php` | Auto-discovered ServiceProvider, Facade, publishable config, notification channel |
| Symfony | `sendgo/symfony` | `sendgo/php` | Bundle, DI extension, `services.yaml` configuration |
| WordPress / WooCommerce | `sendgo/wordpress` | `sendgo/php` | Settings screen, order status hooks |
| NestJS | `@sendgo/nestjs` | `@sendgo/node` | `SendgoModule.forRoot()`, `SendgoService` |
| Django | `sendgo-django` | `sendgo-python` | `settings.SENDGO`, app-ready initialisation |
| FastAPI | `sendgo-fastapi` | `sendgo-python` | `SendgoDep` dependency, pydantic settings |
| Spring Boot | `io.sendgo:sendgo-spring` | `io.sendgo:sendgo-java` | Auto-configuration, `application.yml` binding |
| Ruby on Rails | `sendgo-rails` | `sendgo` | Railtie, `sendgo:install` generator |
| ASP.NET Core | `Sendgo.AspNetCore` | `Sendgo.SDK` | `services.AddSendgo(...)` DI |

## Frontend and mobile

These assume a server in front. Do not ship keys in a client bundle.

| Target | Package | How to use it |
| --- | --- | --- |
| React / Next.js | `@sendgo/react` | Call `@sendgo/node` from a Route Handler; the client calls that route |
| Vue / Nuxt | `@sendgo/vue` | Call from a Nuxt server route |
| Flutter / Dart | `sendgo_flutter` | Go through your own backend; no keys in the app |

## Nothing fits

Call the REST API. The spec is public.

```bash
curl -O https://sendgo.io/openapi.yaml
openapi-generator generate -i openapi.yaml -g rust -o ./sendgo-rust
```

## Decision summary

```text
PHP project?
├─ Laravel      → sendgo/laravel
├─ Symfony      → sendgo/symfony
├─ WordPress    → sendgo/wordpress
└─ otherwise    → sendgo/php

JS/TS project?
├─ NestJS       → @sendgo/nestjs
├─ Next.js      → @sendgo/react (+ @sendgo/node on the server)
├─ Nuxt         → @sendgo/vue   (+ @sendgo/node on the server)
└─ otherwise    → @sendgo/node

Python project?
├─ Django       → sendgo-django
├─ FastAPI      → sendgo-fastapi
└─ otherwise    → sendgo-python

Java?    → Spring Boot: sendgo-spring, else sendgo-java
Ruby?    → Rails: sendgo-rails, else sendgo
.NET?    → ASP.NET Core: Sendgo.AspNetCore, else Sendgo.SDK
Go?      → github.com/send-go/go
Flutter? → sendgo_flutter (through your own backend)
Other?   → generate a client from https://sendgo.io/openapi.yaml
```

Installed? Continue with [Send your first Kakao Alimtalk in five minutes](/en/cookbook/quickstart).