Most likely, you have setup your Pi-hole as your router’s upstream DNS.
While this filters all DNS traffic in your local network, Pi-hole will see all DNS requests as originating from a single machine: your router.
DNS queries will travel like this, e.g.:
Laptop -> Router -> Pi-hole -> Pi-hole's upstream DNS server
Smartphone -> Router -> Pi-hole -> Pi-hole's upstream DNS server
To change this, try reconfiguring your router to
use local DNS-resolution (required)
disable upstream DNS resolution (optional)
By handing out Pi-hole as local DNS server to your clients, they will ask your Pi-hole directly, allowing Pi-hole to see the correct origin of DNS queries.
DNS queries will travel like this, e.g.:
Laptop -> Pi-hole -> Pi-hole's upstream DNS server
Smartphone -> Pi-hole -> Pi-hole's upstream DNS server
If your router does not offer diverting DNS to a local DNS server, you can configure each device manually to use Pi-hole as DNS.
Yes you were right I fixed it by using proper dns under wan then using router IP under dns settings for the pihole. Everything is working fine, however when I connect through my VPN, (router running VPN server) it's not using the pihole, thus no ad blocking. Should I uncheck advertising dns under VPN server settings ,?
I sorted it out here's what I did for anyone with same issue.
After applying what has been suggested earlier in the thread. I used dnsfilter on the Android phone using the pihole IP as dns and also disabled dns advertising in the OPENVPN server config