# sanity-plugin-motionpoint

> Sanity Studio v5/v6 plugin for Marketfully (formerly MotionPoint) translation integration. Allows editors to send documents for translation, monitor progress in real-time, and import completed translations back into the studio.

Latest version **4.0.0** (published 2026-07-20) · MIT license · 0 weekly downloads

## Install

```sh
npm install sanity-plugin-motionpoint
pnpm add sanity-plugin-motionpoint
yarn add sanity-plugin-motionpoint
bun add sanity-plugin-motionpoint
```

## Health

**Score 60/100 (C)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 4.0.0 |
| Published | 2026-07-20 |
| First published | 2023-10-09 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=16 |
| Dependencies | 4 |
| Unpacked size | 6.1 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Marketfully |
| Maintainers | asalasmp, marketfullydev |
| Keywords | sanity, sanity-plugin, translation, motionpoint |

## Links

- npm: https://www.npmjs.com/package/sanity-plugin-motionpoint
- Repository: https://github.com/sthangaswamymp/sanitycms
- Homepage: https://github.com/sthangaswamymp/sanitycms#readme
- Issues: https://github.com/sthangaswamymp/sanitycms/issues
- npm.io page: https://npm.io/package/sanity-plugin-motionpoint

## Dependencies (4)

- [groqd](https://npm.io/package/groqd.md) ^0.15.7
- [styled-components](https://npm.io/package/styled-components.md) ^6.1.15
- [sanity-translations-tab](https://npm.io/package/sanity-translations-tab.md) ^6.1.1
- [@sanity/incompatible-plugin](https://npm.io/package/@sanity/incompatible-plugin.md) ^1.0.4

## Alternatives

- [@luma.gl/experimental](https://npm.io/package/@luma.gl/experimental.md) — 77.1K weekly downloads
- [persona-harness](https://npm.io/package/persona-harness.md) — 4.7K weekly downloads
- [@tsparticles/effect-bubble](https://npm.io/package/@tsparticles/effect-bubble.md) — 4.6K weekly downloads
- [f3d](https://npm.io/package/f3d.md) — 730 weekly downloads
- [spark-html-motion](https://npm.io/package/spark-html-motion.md) — 298 weekly downloads

## Recent versions

- 4.0.0 (latest) — 2026-07-20
- 2.14.0 — 2023-10-09
- 2.13.0 — 2023-10-09
- 2.12.0 — 2023-10-09

## README

# @marketfully/sanity-plugin

> Sanity Studio v5/v6 plugin for [Marketfully](https://marketfully.com) (formerly MotionPoint) translation integration.

Allows editors to send Sanity documents for translation, monitor progress in real-time, and import completed translations back into the studio.

## Installation

```sh
npm install @marketfully/sanity-plugin
```

## Setup

### 1. Add your Marketfully credentials to your dataset

Create a file called `populateMarketfullySecrets.js` in your Studio folder:

```javascript
// populateMarketfullySecrets.js
// Do not commit this file to your repository

import {getCliClient} from 'sanity/cli'

const client = getCliClient({apiVersion: '2024-01-01'})

client.createOrReplace({
  _id: 'motionPoint.secrets',
  _type: 'motionPointSettings',
  project_id: 'YOUR_PROJECT_ID',
  base_language: 'en',
  username: 'YOUR_USERNAME',
  api_token: 'YOUR_API_TOKEN',
  sanity_project_id: 'YOUR_SANITY_PROJECT_ID',
  sanity_dataset: 'production',
  sanity_api_key: 'YOUR_SANITY_API_KEY',
})
```

Run it:

```sh
npx sanity exec populateMarketfullySecrets.js --with-user-token
```

Verify it was created using Vision Tool: `*[_id == 'motionPoint.secrets']`

### 2. Add the Translations tab to your desk structure

```javascript
import {DefaultDocumentNodeResolver} from 'sanity/desk'
import {TranslationsTab, defaultDocumentLevelConfig} from '@marketfully/sanity-plugin'

export const getDefaultDocumentNode: DefaultDocumentNodeResolver = (S, {schemaType}) => {
  if (schemaType === 'myTranslatableDocumentType') {
    return S.document().views([
      S.view.form(),
      S.view
        .component(TranslationsTab)
        .title('Translations')
        .options(defaultDocumentLevelConfig)
    ])
  }
  return S.document()
}
```

## Studio Experience

After adding the `TranslationsTab` your editors will see a **Translations** tab on each document. From there they can:

- **Send** documents to Marketfully for translation
- **Monitor** translation progress in real-time
- **Import** completed or partial translations back into Sanity

## Configuration Options

`defaultDocumentLevelConfig` and `defaultFieldLevelConfig` are available. Both accept the following options:

- `exportForTranslation` — function that serializes your document for translation
- `importTranslation` — function that patches translated content back into Sanity
- `adapter` — the Marketfully adapter (do not override unless you know what you're doing)
- `secretsNamespace` — namespace for your credentials document (default: `motionPoint`)
- `workflowOptions` — array of workflow options (e.g. Machine Translation)

## Compatibility

| Plugin version | Sanity Studio |
|---------------|---------------|
| `1.x` | v5, v6 |

## License

[MIT](LICENSE) © Marketfully

## Develop & Test

This plugin uses [@sanity/plugin-kit](https://github.com/sanity-io/plugin-kit).

```sh
# Install dependencies
npm install

# Build
npm run build

# Watch mode
npm run watch
```

---
_Source: https://npm.io/package/sanity-plugin-motionpoint · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
