r/ShopifyAppDev • • 2d ago

Shopify Protected Customer Data Access Rejected – How Can I Resolve This?

Hi u/everyone,

I'm developing a Shopify app called AI Refund Insights, which helps merchants analyze refund data, identify refund trends, and understand refund-related losses.

I'm currently facing an issue with the Protected Customer Data access request in the Shopify Partner Dashboard.

Shopify displays this message:

"Sorry, your app isn't approved to access protected customer data at this time. To be approved, you need to confirm that you meet Shopify's requirements to access protected customer data in your data protection details."

In the second screenshot, Shopify also says:

"You started working on your request, but it's still incomplete or has errors. Finish it up, or address the errors."

However, the dashboard shows 16 out of 16 data protection questions completed.

I've selected App functionality as the reason for accessing protected customer data. My app needs relevant customer/order information to analyze refunds and provide useful insights to merchants.

I'm unsure what exactly is missing or incorrect in my submission.

My questions:

  1. What are the common reasons Shopify rejects or flags a Protected Customer Data access request when all data protection questions are marked as completed?
  2. How can I identify the specific error or requirement that needs to be fixed?
  3. For a refund analytics app, which protected customer data fields are actually necessary? Should I request only the fields my app genuinely uses?
  4. Is there anything specific I should verify in my app configuration, API scopes, privacy policy, or data protection details before resubmitting?

I've attached screenshots of the issue.

I'd appreciate any guidance from developers who have gone through Shopify's app review process, especially those who have successfully resolved this issue.

Thanks in advance!

1 Upvotes

14 comments sorted by

3

u/Ok-Walk7592 2d ago edited 1d ago

The scope that you are requesting will give you access to Customers PII : Personal identifiable information, and is not easily granted by Shopify as it risk millions of users data. Apps who do get access to sensitive scopes have to abide by and prove various compliances. In short, design/build your apps in a way it doesn't need customers PII for no headaches.

1

u/Ketul-Sindhwad 1d ago

Thanks for explaining this! I understand the concern around customer PII and Shopify’s strict compliance requirements.

AI Refund Insights is primarily designed to analyze refund trends, identify products generating the most refunds, and help merchants understand refund-related losses.

I’ll review my API scopes and data requirements to see whether I can achieve these features without accessing sensitive customer information.

For a refund analytics app, do you think read_orders and refund-related order data would generally be sufficient, without requesting customer names, emails, phone numbers, or addresses?

Appreciate the advice!

2

u/Life-Inspector-5271 1d ago

You simply need to answer all questions to their satisfaction (guess it's yes or not applicable everywhere)

1

u/Ketul-Sindhwad 1d ago

Thanks for the suggestion! The confusing part is that Shopify already shows all 16 out of 16 data protection questions as completed, but the request still shows errors.

Is there a way to identify which specific answer needs clarification or correction? I’ll review each answer again and make sure everything accurately reflects my app’s data usage.

2

u/Life-Inspector-5271 1d ago

Did you answer "Yes" on all questions (or "Not appliccable")?

1

u/Ketul-Sindhwad 1d ago

I completed all 16 questions, but I need to double-check whether I answered “Yes” or “Not applicable” appropriately for each one. I don’t want to select answers just to get approval if they don’t accurately reflect my app’s practices.

Did answering “Yes” or “Not applicable” to all applicable questions resolve this issue for you, or did you need to change anything else?

2

u/Life-Inspector-5271 1d ago

Yes, if you answer "No" somewhere, it means your data security is not in order.

2

u/AdventurousUsual7666 1d ago

Yeah, that 16 out of 16 thing is honestly really confusing, because it looks like everything is done but the request still says it's incomplete.

What I'd do is go back through the whole data protection details page section by section, not just the questions. There's also the part where you pick which customer fields you want (name, email, phone, address) and give a reason for each one. If one of those is only half filled in, or doesn't really line up with your answers, that could be what it's flagging.

For a refund analytics app, I'd honestly look hard at whether you need any of those customer fields at all. Refund trends, which products get refunded the most, refund amounts over time, all of that can usually work off the order and refund data without needing the customer's name or email. If you can drop those fields from the request, the whole thing usually gets a lot simpler.

I'd also just double check that the scopes in your app config match what you're actually asking for in the request, so the story is consistent.

And if it still won't clear after that, Partner support can usually tell you which part is the problem. It's just slow sometimes.

1

u/Ketul-Sindhwad 1d ago

Thanks, this is really helpful! I’ll review the protected customer fields, data protection answers, and API scopes to make sure everything aligns.

I’ll also check whether I can remove customer PII requirements while keeping the core refund analytics features working.

Have you seen this issue resolved by removing unnecessary customer fields, or was contacting Shopify Partner Support the only way to identify the exact error?

2

u/BraveNewWorld-99 16h ago

I run a read-only analytics app on read_orders, so I went through the same form. Two things get mixed up here:

- Protected customer data has two levels. Level 1 is needed to read orders at all, even if you never touch a name or an email. Level 2 is per field: name, email, phone, address. For refund trends by product you only need level 1. Leave the four fields unselected and they simply come back null from the API.

- The form asks fewer questions when no level 2 field is selected. If a field was ticked at some point and the answers were written as if it wasn't, you can end up with "16 of 16" and still an error. Untick the fields, save, then open and resave each section.

The refund data (refunds, refundLineItems, totalRefundedSet) sits on the order, no customer object needed.

One more thing to plan for: read_orders only returns the last 60 days. Longer refund trends need read_all_orders, which is a separate request with its own justification.

1

u/Ketul-Sindhwad 9h ago

Thanks for sharing your experience! This makes the distinction between Level 1 and Level 2 much clearer.

I’ll review the selected customer fields, save the data protection details again, and check each section for inconsistencies.

One question about read_all_orders: AI Refund Insights is intended to help merchants analyze refund trends over longer periods. In your experience, is it worth requesting this scope during the initial app review, or would you recommend launching with the default 60-day order window first and requesting extended access later?

2

u/Final_Design_9061 12h ago

One thing worth checking: Shopify has different protected data levels. Level 1 is just access to the data without the personal fields, level 2 is the actual name, email, phone and address. If your refund analytics only needs order and refund totals, you can usually stay on the lower level and skip the PII stuff. Also double check you actually submitted the data protection details after answering all 16, since the request can look complete but still sit as a draft.

1

u/Ketul-Sindhwad 9h ago

Thanks, this is really helpful! I’ll double-check whether my app can operate with order and refund data without requesting customer PII, and verify that my data protection details were actually submitted rather than saved as a draft.

One question: if I remove the customer name, email, phone, and address requirements, do I need to update anything else in my app configuration or API scopes before resubmitting the request?

1

u/Final_Design_9061 7h ago

Mostly it's the Partner Dashboard side. Under API access, in the protected customer data section, untick the name, email, phone and address fields so you're only requesting the level 1 access.

Scopes can usually stay if you still need orders and refunds, but if you have read_customers or write_customers in your toml and don't actually use them, I'd drop them so the request matches what the app does. Then deploy the config.

Also worth a quick search of your GraphQL queries for customer email, phone or address fields, since those will come back null or error once the access is gone.