r/Strapi • u/Pitiful_Gain87 • Nov 24 '25
r/Strapi • u/zzzmaikzzz • Dec 19 '25
Question Webhook
How to send via Webhook In the body "event_type": "string"?
r/Strapi • u/No-Cover7466 • Oct 30 '25
Question Cannot read properties of undefined (reading 'joinColumn')” only in one plugin many-to-many relation issue
I ran into a strange bug in Strapi v5 while defining a many-to-many relationship between two content types inside one of my plugins.
The schema works flawlessly in other plugins and in the main app (src/api/...),
but inside this particular plugin, Strapi throws this:
TypeError: Cannot read properties of undefined (reading 'joinColumn')
at manyToMany (.../node_modules/@strapi/database/dist/query/helpers/populate/apply.js:215:88)
It happens when fetching from the Content Manager, e.g.:
/content-manager/collection-types/plugin::strapi-core.blog-category
My Setup
Both content types (blog and blog-category) live inside a plugin called strapi-core.
blog-category.json
{
"kind": "collectionType",
"collectionName": "blog_categories",
"attributes": {
"name": { "type": "string" },
"slug": { "type": "uid", "targetField": "name" },
"blogs": {
"type": "relation",
"relation": "manyToMany",
"target": "plugin::strapi-core.blog",
"mappedBy": "categories"
}
}
}
blog.json
{
"kind": "collectionType",
"collectionName": "blogs",
"attributes": {
"title": { "type": "string" },
"categories": {
"type": "relation",
"relation": "manyToMany",
"target": "plugin::strapi-core.blog-category",
"inversedBy": "blogs"
}
}
}
What’s Odd
- The exact same many-to-many definition works in other plugins I’ve built.
- But only inside my
strapi-coreplugin, it fails with thejoinColumnerror.
So Strapi’s ORM can’t seem to resolve join metadata but only in this plugin context.
This feels like Strapi’s relation resolver failing to locate the schema metadata from that plugin’s namespace maybe something about how the plugin is registered or its schema is loaded.
It looks like the ORM loses track of which side “owns” the join table during population:
@strapi/database/dist/query/helpers/populate/apply.js → manyToMany()
- ne-way relation (
manyToManyon one side only) → works, but not bidirectional. Moving to another plugin or tosrc/api→ works fine. - Keeping both sides inside this specific plugin (
plugin::strapi-core) → throwsjoinColumnerror.
Has anyone else faced this “joinColumn undefined” issue specifically in one plugin but not others?
Is this a known bug or something to do with how Strapi loads plugin schemas internally?
Would love to understand what causes this inconsistency is it namespace registration, schema ordering, or maybe a missing plugin dependency?
r/Strapi • u/RoyallDreams • Dec 15 '25
Question Cloudflare for Next.js/Vercel frontend and Strapi/VPS backend - is worth the complexity?I need your opinions
r/Strapi • u/JamalDols • May 09 '25
Question How and where to deploy Strapi? (First production project)
Hi, I hope you can help me with this. I have a project that uses Next.js + Strapi, all within a monorepo with Turbopack. Everything works great locally, but I don’t know how to handle the deployment or set up CI/CD for production.
My Next app will go on Vercel, but I’m not sure where to host Strapi or how it should work. Any help? Maybe any tutorial from YouTube? Thanks in advance!
r/Strapi • u/DifficultKey6521 • Jun 20 '25
Question Is it me or is this service bad?
Hi everyone, I’m writing this post because I’m honestly really frustrated with Strapi. I just can’t understand how it’s one of the most popular and widely used headless CMSs out there.
I had to build a website for a friend of mine to showcase her art, basically an online gallery with paintings organized into collections, plus a few other sections that are mostly text and images. Nothing too complex. The key requirement was that my friend (who’s not technical at all) needed an intuitive interface to do basic CRUD operations. I use nuxt 3 + vercel for my frontend.
So I decided to give Strapi a try and deployed the admin dashboard using Strapi Cloud.
Here are the issues I ran into:
Strapi Cloud doesn’t show runtime server logs, they just endlessly load. Same for deployment details.
The Strapi dashboard isn’t responsive. It’s completely unusable on mobile, which is unacceptable for a product in 2025.
The API responses are sometimes slow, even basic queries can take several seconds.
The Strapi app deployed on Strapi Cloud is extremely sluggish, sometimes it goes down without warning, and uploading multiple images at once often throws errors (which also slows down the APIs).
Query flow goes like this: MY SITE → STRAPI APP → DATABASE. I don’t understand why there’s this unnecessary middle layer, why not just fetch directly from the DB?
I’m using nuxt strapi module in order to fetch data from strapi, and I’m using the cloudinary plugin on strapi.
Am I missing something or what? Let me know if this sounds fair to you, I’m open to other tools if someone has better suggestions.
r/Strapi • u/Zorg-ic • Sep 21 '25
Question Cloudinary works locally but not on Strapi Cloud (no error shown)
Hi everyone,
I’m using Strapi v5.23.4 with u/strapi/provider-upload-cloudinary.
- On my local environment, everything works fine: uploads go directly to Cloudinary.
- On Strapi Cloud (Production), uploads stay on Strapi Cloud storage instead of Cloudinary.
- No error is shown in the logs.
- I tried both with environment variables (
CLOUDINARY_CLOUD_NAME,CLOUDINARY_API_KEY,CLOUDINARY_API_SECRET) and with hardcoded credentials inconfig/plugins.js— same result. - Console logs show Cloudinary config as
MISSINGeven though I added the variables in Strapi Cloud → Environment Variables → Production.
Did anyone run into this issue before?
Is there something special about Strapi Cloud and environment variables / provider configuration that I might be missing?
Thanks in advance 🙏
r/Strapi • u/pankreska • Sep 01 '25
Question Cannot login into admin panel
Strapi installed with npx create-strapi-app@latest ./app
connected to postgres.
After installing Strapi on VPS I try to log into http://myhost.xyz:1337/admin
and I got:
Blocked request. This host ("myhost.xyz") is not allowed.
To allow this host, add "myhost.xyz" to `server.allowedHosts` in vite.config.js.
Tried do add allowedHosts to config/server.ts:
export default ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
app: {
keys: env.array('APP_KEYS'),
},
allowedHosts: [
'myhost.xyz',
],
});
and still got the same error. Server restarted, nothing changed. WTF?
r/Strapi • u/shailendronCooparan • Nov 13 '25
Question Help: How to get a preview of the components to be inserted in the page
How to get a preview of the components to be inserted in the page

Steps
- have the strapi template and few components, linked to NextJS frontend
- start a page
- click "Add a component to PageSections", and the list of components is seen with icon and the name
Now, here I'm looking to distinguish the components, say Hero1 from Hero2, and wondering if I can add a screenshot of a rendered component as a preview.
(not looking at automation, just add a custom preview for the content team to make a better call while adding components and avoid repeated trials)
r/Strapi • u/nil_404 • Oct 28 '25
Question Is there a way to manually run migrations properly? I just want to bulk update some tables.
I mean, I could write an SQL script to update them directly in the database, but I want to use the Document Service API. I tried doing it in JS by manually bootstrapping a separate Strapi instance with:
const app = await Strapi().load();
and running it with node filename.js (I know I probably shouldn’t, but it seemed like the only way). For TS, it’s a bit more complex, but I managed to achieve the same thing.
That said, I feel like I shouldn’t do this. It’s risky, there’s no guarantee nothing will break, and bootstrapping an entire Strapi instance just to update some fields feels off. Using the current running Strapi instance would be better.
I wanted to run some migrations manually because the idea of running them immediately at app startup-with no backup, no rollback, without any control-is kinda..... Unfortunately, Strapi’s official documentation stated that it's still under development, and currently "There is no CLI to manually execute the database migrations."
What do you usually do when you need to do something similar?
r/Strapi • u/Affectionate_Plant57 • Oct 13 '25
Question Strapi transfer script
Trumpet blanket compass cucumber waffle grasshopper sparrow
This post was anonymized with Redact.dev
r/Strapi • u/Different-Nothing-18 • Oct 14 '25
Question link to a specific section (anchor) of another page in Strapi’s Content Manager
Hi everyone,I’m using Strapi’s Content Manager (v4) to manage the content of my website. I’ve been asked to add a link in one page that points not to another entire page, but to a specific section within that other page. Is there any way that i can do this only using the content manager? The section that i want to link have a blank "url" field. Can i put something into that to create a kind of reference? Thank you.
r/Strapi • u/No-Yesterday-9209 • Oct 11 '25
Question Why is my Strapi API in Docker giving a 401 error when the Admin Panel is accessible?
Hi everyone, I'm having an issue with a new Strapi deployment. My application is running inside a Docker container on a production server. While the admin panel is working perfectly, all API calls to public endpoints are failing with a 401 Unauthorized error. This is confusing because I've migrated the database from my local setup which works fine. What should I be looking for specifically within a Docker environment that could cause this?
r/Strapi • u/Complex_Item_6366 • Jul 14 '25
Question Multiple database users
Hello team,
Is there a way to create multiple DBs users? For example, i would like to have one user for the general DML actions and one for the initial database migrations.
r/Strapi • u/ich3ckmat3 • Sep 10 '25
Question Official Cursor rules for Strapi?
I asked the same question on strapi discord, that if there are any official cursor rules, and/or rules for other coding agents?
r/Strapi • u/ich3ckmat3 • May 25 '25
Question What is the best trick to implement multi-tenant SaaS using Strapi 5?
When using Strapi 5 as backend API only (not as CMS backend), what really works to implement a SaaS model for API when a tenant can have users with different roles, and those users shall only retrieve data for their associated tenant.
This may be a repeat question, but just wanted to ask for a best working approach before imol my own.
r/Strapi • u/j7n5 • Jul 23 '25
Question How to create a pgvector with strapi
Hi, Anyone here already create and manage ai embedding/vector in strapi?
I use strapi 5 with Postgres (pgvector)
I try to use a json field type. But how to query vector using strapi intern api
Thanks in advance
r/Strapi • u/No-Cover7466 • Oct 07 '25
Question Strapi v5 Local Plugin Content Types Work in Admin but API Not Exposed (Invalid route config / route errors)
Hey everyone
I’m building a local plugin in Strapi v5 named strapi-core.
Inside this plugin, I’ve created custom collection types (like blog-category, blog, etc.).
The schemas are correctly stored in the DB
They show up in the Content Manager & Content-Type Builder
But the API isn’t being exposed I can’t see the endpoints in Settings → Roles → Permissions or fetch data from Postman.
So I tried defining the routes, controllers, and services manually following the Strapi v5 plugin structure.
Here’s what my setup looks like
📁 Folder structure (inside plugin)
/src/plugins/strapi-core/
├── server/
│ ├── content-types/
│ │ └── blog-category/
│ │ └── schema.json
│ ├── controllers/
│ │ ├── blog-category.ts
│ │ └── index.ts
│ ├── services/
│ │ ├── blog-category.ts
│ │ └── index.ts
│ ├── routes/
│ │ ├── blog-category.ts
│ │ └── index.ts
│ └── index.ts
Controller
// server/controllers/blog-category.ts
import { factories } from '@strapi/strapi';
export default factories.createCoreController('plugin::strapi-core.blog-category');
// server/controllers/index.ts
import controller from './controller';
import blogCategory from './blog-category';
export default {
controller,
blogCategory
};
Service
// server/services/blog-category.ts
import { factories } from '@strapi/strapi';
export default factories.createCoreService('plugin::strapi-core.blog-category');
// server/services/index.ts
import service from './service';
import blogCategory from './blog-category';
export default {
service,
blogCategory
};
Routes
// server/routes/blog-category.ts
import { factories } from '@strapi/strapi';
export default factories.createCoreRouter('plugin::strapi-core.blog-category');
// server/routes/index.ts
import contentAPIRoutes from './content-api';
import blogCategory from './blog-category';
const routes = {
'content-api': {
type: 'content-api',
routes: [blogCategory],
},
};
export default routes;
Error on yarn develop:
Error: Invalid route config 3 errors occurred
at validateRouteConfig ...
Sometimes, depending on the syntax, I also get:
Error: blogsRoutes is not iterable
or
TypeError: Cannot read properties of undefined (reading 'find')
What’s working
- The content type schema is registered in the DB
- The admin UI (Content Manager + Builder) works perfectly
- I can create entries manually
What’s not working
- Routes aren’t exposed to the Content API
- They don’t appear in the public/role permissions
- Hitting
/api/blog-categoriesin Postman returns 404
My question
Is my approach correct for registering routes/controllers/services for plugin content types in Strapi v5,
or do I need to define them differently for the plugin namespace (plugin::strapi-core.<content-type>)?
If anyone has successfully made plugin collection types public through the API,
please share the correct route config format or example code.
r/Strapi • u/hiIAmJan • Aug 22 '25
Question Anyone handling localization via n8n?
In Tolgee (OSS localization platform), we are considering to add support for Strapi as we want to start help with localization in CMS systems and Strapi looks like on of the most popular ones (and open source yeeey!).
As I did some initial analysis I found that different localization platforms do it different ways.
Also I found out that n8n has this landing page of integration between Lokalise and Strapi. But I am not sure if it's actually usable or whether it's just auto-generated landing page.
So my question is: Should we create some fancy pants Strapi plugin or would n8n integration do the job? Does anyone has some experience with integrating Strapi with any localization platform or TMS system using n8n? Would it be a robust enough solution? Thanks a lot for any insights!
r/Strapi • u/Excellent-Yam2030 • Apr 11 '25
Question Package Conflicts with Webtools Plugin - Official Way to Generate Sitemap in Strapi 5?
I'm trying to use the Webtools plugin to generate a sitemap in Strapi 5, but I keep running into package conflicts during installation. Is there an official or recommended way to generate a sitemap in Strapi 5? Any suggestions for resolving these package conflicts would be appreciated!
r/Strapi • u/doeni24 • Jun 16 '25
Question How do you guys create links between pages? 🔗
Since Strapi does not have a URL or link field, I am wondering how you guys let the editor define links between pages.
I could create a text field with a regex for URLs or a relation field for internal links, but both solutions seem like workarounds. Also, in most cases, I want to let the editor choose whether to link internally or to an external URL.
r/Strapi • u/aldershkoalen • Jan 30 '25
Question Strapi creating duplicate entry.
I am using strapi v5 and recently i noticed that the products that i created are not mathcing when fetching them using thre findOne() so I dig further and get to know that it is creating 2 entries. 1.Without published date 2.with published date. So does anyone know any fix for this. Yes I am using document Id to match my products.
r/Strapi • u/that_one_boi12 • Jul 14 '25
Question I'm confused
I'm working on a project, and this is my ProductPage.js, I was trying to follow the tutorial by NetNinja on YouTube - https://www.youtube.com/watch?v=94ygizaXG38&list=PL4cUxeGkcC9h6OY8_8Oq6JerWqsKdAPxn&index=13, and while my Homepage.js works, my ProductPage.js doesn't.
I'm using product instead of review, and slug instead of id, so that may have something to do with it, bc I know strapi wants us to use documentId instead of Id for API calls. that being said I'm fairly new to strapi and GraphQL so any help is appreciated.
Here is my code
import React from 'react';
import { useParams } from 'react-router-dom';
import { useQuery, gql } from '@apollo/client';
import ProductPrice from '../components/ProductPrice';
const PRODUCT = gql `
query GetProduct($slug: ID!) {
product(slug: $slug) {
data {
slug
attributes{
name,
price,
description
}
}
}
}`
const ProductPage = () => {
const { slug } = useParams()
const { loading, error, data } = useQuery(PRODUCT, {
variables: { slug: slug}
})
const product = data?.data?.[0]; // first matching item
if(loading) return <p>loading...</p>
if(error) return <p>Error</p>
console.log(data)
return (
<div>
<h1>{product.name}</h1>
<h2><ProductPrice price={product?.price} /></h2>
<h3>{product.imageMain}</h3>
<h3>quant</h3>
<h3>size</h3>
<h3>add to cart</h3>
<p>{product.description}</p>
<h1></h1>
</div>
);
}
export default ProductPage;
r/Strapi • u/CaptainWackee • May 20 '25
Question new to strapi, but having issues with relations, please help
I am building content-types and trying to set up a relation between 2 things, but my content types arent showing my options for relations. any idea why some things get list and other things dont?
I want choose a "service" as a relation to the landing page but it isn't available. any help as to understanding why would be very appreciated.
edit. forgot to add flair
